我得到一个带有@Input elements: Observable<Student[]>
的表单的非常简单的情况,该表单每2秒更新一次,因此会触发我的表单组件的onChanges
,这会导致意外的行为,例如重置{{ 1}}值,已选择<input>
的{{1}}等等。
我为这种情况采取的方法是在编辑模式和视图模式下定义组件,同时在编辑模式下取消订阅Observable Input和View-mode resubscribing。
是否有更优雅,可能是内置的<select>
处理此类案件的方式?
提前致谢,非常感谢任何帮助!
答案 0 :(得分:0)
您可以将角度组件中的更改检测修改为OnPush
,以防止不必要地覆盖您的本地更改。
@Component({
...
changeDetection: ChangeDetectionStrategy.OnPush
})
甚至您可以更进一步,只在您需要时手动跟踪更改:
constructor(private cd: ChangeDetectorRef) {}
ngOnInit() {
this.inputSubject.subscribe((data) => {
this.inputService.update(data);
this.cd.markForCheck();
})
}
}