angularjs - 无法在角度组件之间切换
问题描述
我试图在我的角度应用程序中的两个组件之间切换,我的目标是首先,当页面仍在加载时,预加载器将显示直到页面完全加载,然后预加载器变量将从 true 变为 false ,然后第二个组件将开始显示。
但是当我尝试它时,我得到了这个错误
ERROR 错误:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:'隐藏:真'。当前值:“隐藏:假”。在 viewDebugError
这是我的 home.component.html 代码
<app-preloader *ngIf="preloader; else Notpreloader"></app-preloader>
<ng-template #Notpreloader>
<div>
......
</div>
</ng-template>
这是 home.component.ts 的代码
import { Component, OnInit, AfterViewInit, ChangeDetectorRef, AfterContentChecked } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit, AfterViewInit, AfterContentChecked {
constructor(private changeDetector: ChangeDetectorRef) { }
ngAfterContentChecked(): void {
this.changeDetector.detectChanges();
}
preloader=true
ngAfterViewInit() {
this.preloader=false
}
ngOnInit() {
}
}
我怎样才能摆脱这个错误,让它按照我想要的方式工作,这样当页面完成加载时,它将隐藏预加载器组件并加载该页面的主页?
解决方案
使用 settimeout 将预加载器包装在 ngAfterinit 中。所以像这样
ngAfterViewInit() {
setTimeout(() => {
this.preloader = false;
}, 0);
}
推荐阅读
- android - 在显示之前对 CameraX 分析中的帧图像进行操作(裁剪和缩放)
- python - 如何将列表中的条目转换为字符串?
- netlogo - 在两个品种之间创建条件链接
- html - 无法在 div 中传递 id 变量和在 html 中传递数据目标
- pandas - 无论数据是什么,pandas rolling(n).corr() 都停留在 1 上?
- javascript - Cloud Functions 如何嵌套 Promise
- python - 忽略命令无异常:discord.ext.commands.errors.CommandNotFound:找不到命令“memechannel”错误(discord.py)
- swing - 同步Java Canvas 实例的paint() 方法?
- mongodb - 启动备份 WiredTiger mongodb 数据库时出错
- php - 通过 PowerShell 从 JSON 数组中提取特定对象作为逗号分隔的字符串