如何在编辑模式下停止接收输入

时间:2017-04-06 07:23:33

标签: javascript angular input onchange

我得到一个带有@Input elements: Observable<Student[]>的表单的非常简单的情况,该表单每2秒更新一次,因此会触发我的表单组件的onChanges,这会导致意外的行为,例如重置{{ 1}}值,已选择<input>的{​​{1}}等等。

我为这种情况采取的方法是在编辑模式和视图模式下定义组件,同时在编辑模式下取消订阅Observable Input和View-mode resubscribing。

是否有更优雅,可能是内置的<select>处理此类案件的方式?

提前致谢,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以将角度组件中的更改检测修改为OnPush,以防止不必要地覆盖您的本地更改。

@Component({
  ...
  changeDetection: ChangeDetectionStrategy.OnPush
})

甚至您可以更进一步,只在您需要时手动跟踪更改:

constructor(private cd: ChangeDetectorRef) {}

ngOnInit() {
  this.inputSubject.subscribe((data) => {
    this.inputService.update(data);
    this.cd.markForCheck();
  })
 }
}
相关问题