Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度加载误差表达式ChangedTerrithasbeenscheckedError_Javascript_Html_Css_Angular - Fatal编程技术网

Javascript 角度加载误差表达式ChangedTerrithasbeenscheckedError

Javascript 角度加载误差表达式ChangedTerrithasbeenscheckedError,javascript,html,css,angular,Javascript,Html,Css,Angular,我为应用程序中的所有请求创建了一个组件加载和一个拦截器,加载将显示在屏幕上,直到请求完成。但是,每当路由器出口的组件发生更改时,我都会收到一个错误。你能帮我吗 我的错误: 错误:ExpressionChangedTerrithasBeenCheckedError:表达式在检查后已更改。以前的值:“未定义”。当前值:“true”。该视图似乎是在父视图及其子视图已被脏检之后创建的。它是在变更检测钩子中创建的吗 我的代码: export class MasterPageComponent implem

我为应用程序中的所有请求创建了一个组件加载和一个拦截器,加载将显示在屏幕上,直到请求完成。但是,每当路由器出口的组件发生更改时,我都会收到一个错误。你能帮我吗

我的错误:

错误:ExpressionChangedTerrithasBeenCheckedError:表达式在检查后已更改。以前的值:“未定义”。当前值:“true”。该视图似乎是在父视图及其子视图已被脏检之后创建的。它是在变更检测钩子中创建的吗

我的代码:

export class MasterPageComponent implements OnInit {

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

  ngOnInit(): void {}

  isLoading: Subject<boolean> = this.loader.isLoading;
}
导出类MasterPageComponent实现OnInit{
构造函数(私有el:ElementService,私有装入器:装入器服务){}
ngOnInit():void{}
isLoading:Subject=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>

我的装载机服务:

export class LoaderService {
    isLoading = new Subject<boolean>();
    show() {
        this.isLoading.next(true);
    }
    hide() {
        this.isLoading.next(false);
    }
}
导出类装入器服务{
isLoading=新主题();
show(){
this.isLoading.next(true);
}
隐藏(){
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())
    );

  }
}
导出类LoaderInterceptor实现HttpInterceptor{
构造函数(私有加载器:LoaderService){
}
拦截(请求:HttpRequest,下一步:HttpHandler){
this.loader.show()
返回next.handle(req.pipe)(
完成(()=>this.loader.hide())
);
}
}

这不是一个错误,而是一个恼人的警告,当你在
--prod
模式下编译你的应用程序后,它就会消失

要让它安静下来:

constructor(private changeDetector : ChangeDetectorRef) { }

ngAfterViewChecked(){
   this.changeDetector.detectChanges();
}

谢谢Jeremy,这是工作\o/