首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngOnInit中的ExpressionChangedAfterItHasBeenCheckedError

ngOnInit中的ExpressionChangedAfterItHasBeenCheckedError
EN

Stack Overflow用户
提问于 2018-01-26 16:08:02
回答 1查看 1.1K关注 0票数 0

我让我的HTTP拦截器在每次发出HTTP请求时打开加载栏:

代码语言:javascript
复制
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中,我有一个主题:

代码语言:javascript
复制
openProgressbar = new Subject<boolean>();

我在我的应用组件中监听它,我把我的加载栏放在那里:

代码语言:javascript
复制
ngOnInit() {
    this.dataStorageService.openProgressbar.subscribe(czyOtworzyc => {
        this.alertMessageNavbarStatus = true;
    });
}

ExpressionChangedAfterItHasBeenCheckedError正在显示。我正在寻找使用ngAfterContentChecked的解决方案,但它对我不起作用。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-26 16:17:00

ChangeDetectorRef注入到组件中

代码语言:javascript
复制
import { ChangeDetectorRef } from '@angular/core';

constructor(private _changeDetectorRef: ChangeDetectorRef) {}

手动运行更改检测

代码语言:javascript
复制
ngOnInit() {
    ...
    this._changeDetectorRef.detectChanges();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48457666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档