[英]ExpressionChangedAfterItHasBeenCheckedError in ngOnInit
I've got my HTTP interceptor to open loading bar each time HTTP request is made: 每次发出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);
});
}
Then in my data-storage-service
I have a subject: 然后在我的
data-storage-service
,有一个主题:
openProgressbar = new Subject<boolean>();
And I listen to it in my app component, where I placed my loading bar: 然后在我的应用程序组件中放置了加载栏,并在其中进行监听:
ngOnInit() {
this.dataStorageService.openProgressbar.subscribe(czyOtworzyc => {
this.alertMessageNavbarStatus = true;
});
}
But the ExpressionChangedAfterItHasBeenCheckedError
is showing. 但是正在显示
ExpressionChangedAfterItHasBeenCheckedError
。 I was looking for solution with using ngAfterContentChecked but it didn't work for me. 我一直在寻找使用ngAfterContentChecked的解决方案,但对我而言不起作用。 Could anybody help me?
有人可以帮我吗?
Inject ChangeDetectorRef
into the component 将
ChangeDetectorRef
注入组件
import { ChangeDetectorRef } from '@angular/core';
constructor(private _changeDetectorRef: ChangeDetectorRef) {}
Run change detection manually 手动运行变更检测
ngOnInit() {
...
this._changeDetectorRef.detectChanges();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.