【发布时间】:2018-04-01 19:19:12
【问题描述】:
我有一个带有布尔变量的 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”。
设置这些“默认”值的“正确方法”是什么。
【问题讨论】:
-
尝试 ngOnChages() 生命周期而不是 ngOnInit(),它可能会解决您的问题。
-
接下来在 someStream 上何时何地调用?
-
@MohamedGara 在同一个 onInit 块中是一些检查 URL 参数的逻辑。如果所有必需的参数都在那里,它会启动一个 http 调用并设置 isLoading。
标签: angular typescript rxjs