在我的應用程序中,我有一個初始化XHR請求,我希望讓整個應用程序等待這個XHR完成。把它想象爲初始化應用程序。是否有應用程序等待初始XHR加載?
我使用angular-cli
所以我有標準的文件和結構。
在頂部,我有app.component.html
其中只包含一個行:<router-outlet></router-outlet>
我試圖得到一個路線警衛工作,但這些都是在使用路由檢查。
任何一點都是有用的。
在我的應用程序中,我有一個初始化XHR請求,我希望讓整個應用程序等待這個XHR完成。把它想象爲初始化應用程序。是否有應用程序等待初始XHR加載?
我使用angular-cli
所以我有標準的文件和結構。
在頂部,我有app.component.html
其中只包含一個行:<router-outlet></router-outlet>
我試圖得到一個路線警衛工作,但這些都是在使用路由檢查。
任何一點都是有用的。
任何具體原因不使用HttpClient?
我對此使用Observable。這是解決這個問題的方法之一。
在你的服務文件:
1 - 創建BehaviorSubject
letThemKnow = new BehaviorSubject<boolean>(false);
2 - 返回一個可觀察從您撥打的HttpClient或XHR類似於下面的代碼的功能。
fetchData(): Observable<any> { return this.http.get<T>(URL). });
在app.components.ts
和內部ngOnInit
呼叫fetchData()和認購該
this.yourService.fetchData().subscribe(() => { this.yourservice.letThemKnow.next(true); });
那麼只要在你的應用程序,你需要的數據或應用程序啓動後已準備就緒。只需訂閱並檢查該服務是否爲TRUE。
與此類似的東西。 this.yourservice.letThemKnow.subscribe((state: boolean) => { if (state) { //do this }
這裏RxJs http://reactivex.io/rxjs/
事情是[本](https://hackernoon.com/hook-into-angular-initialization-process-add41a6b7e)? –