在ListComponent
中,应该使用一些初始化逻辑。准备工作完成后,会从ngOnInit发出事件。 AppComponent正在侦听事件以提供要绑定的数据。
主要组件:
export class AppComponent {
someList$: Observable<string[]>;
// initialized EventEmitter
onListInit() {
this.someList$ = of(['Angular', 'React']);
}
}
孩子
export class ListComponent {
@Input() someList = [];
@Output() initialized: EventEmitter<any> = new EventEmitter();
ngOnInit() {
// setTimeout(() => this.initialized.emit());
this.initialized.emit();
}
}
这将导致ExpressionChangedAfterItHasBeenCheckedError。通常,我理解为什么会发生这种情况,但仍然感到惊讶,为什么在事件处理后不运行更改检测(发出和侦听不是异步操作?)。
有没有setTimeout,ChangeDetectorRef等的好方法吗?