这个问题发生的原因是因为Resolver没有等待Storage和HTTP的调用完成就开始了页面的加载。为了解决这个问题,需要使用rxjs的forkJoin操作符来等待Storage和HTTP的调用完成后再开始页面的加载。
代码示例:
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
import { forkJoin } from 'rxjs';
import { Storage } from '@ionic/storage';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class MyResolver implements Resolve {
constructor(private storage: Storage, private http: HttpClient) { }
resolve() {
return forkJoin([
this.storage.get('my-data'),
this.http.get('https://my-api.com/data')
]);
}
}
在这个示例代码中,我们使用了forkJoin操作符来等待Storage和HTTP的调用完成后再返回这些数据。在调用Resolver的时候,Angular会等待forkJoin的操作完成后再开始加载页面。