我试图使用Angular2-Material ..
我已经安装了@ angular2 / material和@ angular2 / cdk并且想要使用SnackBar ..
我已经在@NgModule中导入了MdSnackBarModule
并尝试使用snackBar.open("hello")..
显示小吃栏,文本显示两次:
一旦进入小吃店,一次进入右上角。
我打开了控制台,它向我展示了这个
MdSnackBarContainer_html:1 :
Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'initial'. Current value: 'visible'.
以前有人遇到过这个吗? 感谢。
编辑:
从ngOnInit()中删除后,错误不再出现..
但是小吃店仍然有缺陷,cdk-visually-hidden
类仍然可见。
有什么想法吗?
将代码放在这里是一个问题..因为它位于离线网络中.. 我会通过
转储主要部分app.module.ts:
import {MdSnackBarModule, MdIconModule, OVERLAY_PROVIDERS} from "@angular/material";
...
imports: [... MdSnackBarModule, BrowserAnimationsModule, MdIConModule],
providers: [ OVERLAY_PROVIDERS ]
..
.angular-cli.json:
...
"styles": [
"bootstrap.css"
],
..
templates.component.ts:
...
@Component({
..
providers: [...MdSnackBar]
..
})
..
public constructor(public snackBar: MdSnackBar...)
...
public doSomething() {
this.snackBar.open("Test test test");
}
...
顺便说一下,当我不使用动作时,文本甚至不显示在小吃店上。
答案 0 :(得分:1)
我通过将snackBar.open方法移动到Component的构造函数而不是在ngOnInit方法中调用它来避免此错误。