在我的应用程序中,我有一个初始化XHR请求,我想让整个应用程序等待此XHR完成。将其视为初始化应用程序。
我正在使用angular-cli
所以我有标准的文件和结构。
在顶部,我app.component.html
只包含一行:<router-outlet></router-outlet>
我试图让路线保护工作,但是在使用路线时会检查这些。
任何要点都会有用。
答案 0 :(得分:0)
任何特殊原因不使用HttpClient ??
我使用Observable。这是解决问题的一种方法。
在您的服务文件中:
1 - 创建一个BehaviorSubject
letThemKnow = new BehaviorSubject<boolean>(false);
2 - 从您调用HttpClient或XHR的函数返回一个observable,类似于下面的代码。
fetchData(): Observable<any> {
return this.http.get<T>(URL).
});
在app.components.ts
和ngOnInit
内调用fetchData()并订阅
this.yourService.fetchData().subscribe( () => {
this.yourservice.letThemKnow.next(true);
});
然后,只要您的应用在数据或应用程序准备就绪后需要启动。只需订阅并检查该服务是否正确。
类似于此的东西。
this.yourservice.letThemKnow.subscribe((state: boolean) => {
if (state) {
//do this
}
这里是RxJs http://reactivex.io/rxjs/