简体   繁体   English

ngOnInit中的ExpressionChangedAfterItHasBeenCheckedError

[英]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.

相关问题 带有Promise的ngOnInit上的ExpressionChangedAfterItHasBeenCheckedError - ExpressionChangedAfterItHasBeenCheckedError on ngOnInit with Promise 在 ngOnInit 中添加验证器时的 ExpressionChangedAfterItHasBeenCheckedError - ExpressionChangedAfterItHasBeenCheckedError when add validator in ngOnInit Angular 8 上的 ExpressionChangedAfterItHasBeenCheckedError 和在 ngOnInit 上调用的方法 - ExpressionChangedAfterItHasBeenCheckedError on Angular 8 and method called on ngOnInit 从ngOnInit调度操作时ExpressionChangedAfterItHasBeenCheckedError - ExpressionChangedAfterItHasBeenCheckedError when dispatching action from ngOnInit 为什么更改NgOninit上的父级数据不会导致ExpressionChangedAfterItHaHasBeenCheckedError? - Why does changing a parents data on NgOninit not cause ExpressionChangedAfterItHasBeenCheckedError? ExpressionChangedAfterItHasBeenCheckedError - ExpressionChangedAfterItHasBeenCheckedError 具有可观察性的ExpressionChangedAfterItHasBeenCheckedError - ExpressionChangedAfterItHasBeenCheckedError with observable ngClass 的 ExpressionChangedAfterItHasBeenCheckedError - ExpressionChangedAfterItHasBeenCheckedError with ngClass ExpressionChangedAfterItHasBeenCheckedError原因 - ExpressionChangedAfterItHasBeenCheckedError cause 带有ViewChildren的ExpressionChangedAfterItHasBeenCheckedError - ExpressionChangedAfterItHasBeenCheckedError with ViewChildren
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM