繁体   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