当前位置: 首页 > 知识库问答 >
问题:

角度加载误差ExpressionChangedAfterItHasBeenCheckedError

长孙嘉容
2023-03-14

我为我的应用程序中的所有请求创建了一个组件加载和一个拦截器,加载会出现在屏幕上,直到请求完成为止。然而,每当路由器出口的组件发生变化时,我就会得到一个错误。你能帮帮我吗?

我的错误:

错误错误:ExpressionChangedAfterithasBeenCheckedError:表达式在检查后已更改。前一个值:“未定义”。当前值:“true”。似乎视图是在父视图和子视图进行了脏检查之后创建的。它是在变更检测挂钩中创建的吗?

我的代码:

export class MasterPageComponent implements OnInit {

  constructor(private el: ElementService, private loader: LoaderService) { }

  ngOnInit(): void {}

  isLoading: Subject<boolean> = this.loader.isLoading;
}

master-page.component.html

<div class="wrapper default-theme" [ngClass]="getClasses()">
  <app-navbar></app-navbar>
  <main>
    <app-sidebar></app-sidebar>
    <div class="pages container-fluid pt-4 pb-4 pl-4 pr-4 ">
      <router-outlet></router-outlet>
    </div>
    <div class="overlay" (click)="toggleSidebar()"></div>
  </main>
</div>
<app-loading *ngIf="isLoading | async"></app-loading>

我的LoaderService:

export class LoaderService {
    isLoading = new Subject<boolean>();
    show() {
        this.isLoading.next(true);
    }
    hide() {
        this.isLoading.next(false);
    }
}

我的加载程序拦截器:

export class LoaderInterceptor implements HttpInterceptor  {

  constructor(private loader: LoaderService) {

  }

  intercept(req: HttpRequest<any>, next: HttpHandler) {
    this.loader.show()
    return next.handle(req).pipe(
      finalize(() => this.loader.hide())
    );

  }
}

共有1个答案

夏高朗
2023-03-14

这不是一个错误,这是一个恼人的警告,在您以--prod模式编译应用程序后就消失了。

让它安静下来:

constructor(private changeDetector : ChangeDetectorRef) { }

ngAfterViewChecked(){
   this.changeDetector.detectChanges();
}
 类似资料:
  • 问题内容: 我首先使用body标签中的ng-app =“ myApp”初始化我的应用,这对于在首页加载时加载的所有angularized-html都适用。 稍后,我有一些代码将angularized-html加载到DOM中。 在angular 1.08中,我可以在加载后只运行angular.bootstrap($ newLoadHTML,[“ myApp”]),它将可以正常工作。$ newLoad

  • 我想要Express服务器端重定向角度页面 我在localhost:3000处运行express 在localhot:4200处运行angular 当express重定向到angular localhost时:4200 我总是收到错误 如何让角接受cors响应?

  • 我正在尝试将量角器e2e测试迁移到cypress。第一步是运行这个命令:<code>ng add@cypress/schematic</code>它运行得很好,但是现在当我键入<code>ng e2e</code>时,我得到了一个错误: 发生未处理的异常:作业名称"… getProjectMetadata"不存在。有关详细信息,请参阅"C:\User\WAEL~1.ABB\AppData\Loca

  • 问题内容: 我有一个yeoman脚手架应用程序(全栈角度生成器)。 可以正常工作,但是会产生锁定内存的分布,这很可能是因为角度中的圆形引用。 我将angular升级到了。我得到的错误是: 升级之前,错误为: 调试非常困难,因为它仅在构建/缩小之后才发生。我所有的模块都是angular的数组格式,因此最小化DI应该不是问题,而是这样。 没有单个脚本会导致这种情况。它唯一消失的方法是,如果我不使用我的

  • 我有一个angular项目,其中有一个大的背景图像,填充页面,还有一个简单的侧边栏,其中包含链接,单击后,会将背景的url更改为另一个图像(来自cdn)。由于这些图像相当大,需要一两秒钟才能加载,这很明显,我想添加一个预加载程序,但我不确定如何在angular 2中完成。 在我的html中,我有这个: 变量urlImage填充在组件的构造函数中,侧栏链接在单击时用一个简单的函数改变它的值,如下所示

  • 我从angular调用这个API,但我在飞行前请求上得到了CORS错误。我什么都试过了,但不知道哪里出错了。你知道吗?