因此,我了解在Angular上使用ExpressionChangedAfterItHasBeenCheckedError
的“原因”,但是我只是无法根据正在阅读的文章弄清楚如何修复它。我所拥有的是这样定义一个可观察对象的服务:
private classification = new BehaviorSubject<string>('Assumed to be A');
public hazardClassification$ = this.classification.asObservable();
public setClassification(value: string): void {
this.classification.next(value);
}
在确定值的子组件中,我通过ngOnInit
对其进行设置:
ngOnInit(): void {
this.hazardClassificationService.setClassification(this.hazardClassification);
this.valueChanges = this.thisTabFormGroup.valueChanges.subscribe(() => this.hazardClassificationService.setClassification(this.hazardClassification));
}
在父组件中,我像这样抓取可观察的东西:
ngAfterContentChecked(): void {
this.hazardClassification$ = this.hazardClassificationService.hazardClassification$;
}
,然后通过hazardClassification$ | async
将其显示在父级的HTML中。
到目前为止,我一直尝试在父级ngOnInit
,ngAfterContentChecked
和ngAfterContentInit
中分配可观察对象。他们都不是正确的地方。
答案 0 :(得分:0)
尝试在this.classification.next(value)
内部致电setTimeout
:
public setClassification(value: string): void {
setTimeout(() => {
this.classification.next(value);
});
}