2017-10-20 62 views
-1

在我的應用程序中,我有一個初始化XHR請求,我希望讓整個應用程序等待這個XHR完成。把它想象爲初始化應用程序。是否有應用程序等待初始XHR加載?

我使用angular-cli所以我有標準的文件和結構。

在頂部,我有app.component.html其中只包含一個行:<router-outlet></router-outlet>

我試圖得到一個路線警衛工作,但這些都是在使用路由檢查。

任何一點都是有用的。

+0

事情是[本](https://hackernoon.com/hook-into-angular-initialization-process-add41a6b7e)? –

回答

0

任何具體原因不使用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/

相關問題