簡體   English   中英

ngOnInit中的ExpressionChangedAfterItHasBeenCheckedError

[英]ExpressionChangedAfterItHasBeenCheckedError in ngOnInit

每次發出HTTP請求時,我都有HTTP攔截器打開加載欄:

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const dataStorageService = this.injector.get(DataStorageService);
    dataStorageService.openProgressbar.next(true);
    return next
        .handle(req)
        .do(evt => {
             if (evt instanceof HttpResponse) {
                 dataStorageService.openProgressbar.next(false);
            }
        })
        .catch(err => {
            return Observable.throw(err);
        });
    }

然后在我的data-storage-service ,有一個主題:

openProgressbar = new Subject<boolean>();

然后在我的應用程序組件中放置了加載欄,並在其中進行監聽:

ngOnInit() {
    this.dataStorageService.openProgressbar.subscribe(czyOtworzyc => {
        this.alertMessageNavbarStatus = true;
    });
}

但是正在顯示ExpressionChangedAfterItHasBeenCheckedError 我一直在尋找使用ngAfterContentChecked的解決方案,但對我而言不起作用。 有人可以幫我嗎?

ChangeDetectorRef注入組件

import { ChangeDetectorRef } from '@angular/core';

constructor(private _changeDetectorRef: ChangeDetectorRef) {}

手動運行變更檢測

ngOnInit() {
    ...
    this._changeDetectorRef.detectChanges();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM