【发布时间】:2018-05-11 20:15:59
【问题描述】:
我在我的 Angular 4 应用程序中使用 Angular Material。当我尝试在ngAfterViewInit() 中使用MatSnackBar 时,我遇到以下错误:
ExpressionChangedAfterItHasBeenCheckedError:表达式已更改 检查后。以前的值:'未定义'。当前值: 'visible-bottom'。似乎视图是在其父级及其子级经过脏检查后创建的。它是在变更检测钩子中创建的吗?
我已经使用ChangeDetectorRef 来检测更改,但它似乎不起作用。
这是我一直在处理的代码:
constructor(private matSnackBar: MatSnackBar, private router: Router, private cdr: ChangeDetectorRef) { }
ngOnInit() {}
ngAfterViewInit() {
let snackBarRef = this.matSnackBar.open('Redirecting to dashboard..', 'Cancel', {
duration: 10000
});
snackBarRef.onAction().subscribe(() => {
console.log("Cancelled");
});
this.cdr.detectChanges();
}
请帮我解决这个问题。
【问题讨论】:
-
您是否尝试在
onAction().subscribe(() => {});内移动this.cdr.detectChanges(); -
@AmitChigadani 这行不通!
-
尝试创建一个工作的 plunker 来复制错误。提供的代码不会有太大帮助。
标签: javascript angular angular-material2