我有一个带有布尔变量的Angular 4组件。初始值取决于输入流。
TypeScript要求我声明变量,如下例所示。如果没有它,this.isLoading将触发错误。
此时我还不知道它的值,所以我只是声明它而不指定变量。
export class SomeComponent implements OnInit {
@Input() someStream$;
isLoading: boolean;
ngOnInit() {
someStream.subscribe((someData) => {
// Code to determine the value for isLoading
this.isLoading = true;
});
}
}
稍后当我知道值时,我会将其设置为true或false。但随后“ExpressionChangedAfterItHasBeenCheckedError”开始了。
设置这些“默认”值的“正确方法”是什么。
答案 0 :(得分:0)
我假设isLoading是你的标志,知道请求是否完成。 我在这种情况下所做的是将加载初始化为false:
export class SomeComponent implements OnInit {
@Input() someStream$;
// Initialized as false.
isLoading: boolean = false;
...
}
如果isLoading标志有更多逻辑,我会改变你与组件交互的方式,直接将@Input()更改为someData,并处理它的父节点中的异步逻辑。
希望它有所帮助。