Javascript 如何在编辑模式下停止接收输入
我得到了一个非常简单的例子,表单中有一个Javascript 如何在编辑模式下停止接收输入,javascript,angular,input,onchange,Javascript,Angular,Input,Onchange,我得到了一个非常简单的例子,表单中有一个@输入元素:可观察的,它每2秒更新一次,因此触发表单组件的onChanges,这会导致意外行为,例如重置值、选定的,等等 对于这种情况,我采用的方法是在编辑模式和查看模式下定义组件,在编辑模式下从可观察的输入中取消订阅,并在查看模式下重新订阅 是否有一种更优雅的,可能是内置的Angular 2方法来处理这种情况 提前感谢,任何帮助都将不胜感激 您可以将角度组件中的更改检测修改为OnPush,以防止不必要地覆盖本地更改 @Component({ ...
@输入元素:可观察的,它每2秒更新一次,因此触发表单组件的onChanges
,这会导致意外行为,例如重置
值、选定的
,等等
对于这种情况,我采用的方法是在编辑模式和查看模式下定义组件,在编辑模式下从可观察的输入中取消订阅,并在查看模式下重新订阅
是否有一种更优雅的,可能是内置的Angular 2
方法来处理这种情况
提前感谢,任何帮助都将不胜感激 您可以将角度组件中的更改检测修改为OnPush
,以防止不必要地覆盖本地更改
@Component({
...
changeDetection: ChangeDetectionStrategy.OnPush
})
或者,您甚至可以更进一步,仅在需要时手动跟踪更改:
constructor(private cd: ChangeDetectorRef) {}
ngOnInit() {
this.inputSubject.subscribe((data) => {
this.inputService.update(data);
this.cd.markForCheck();
})
}
}