【问题标题】:How to stop receiving inputs on edit mode如何在编辑模式下停止接收输入
【发布时间】:2017-09-01 01:58:25
【问题描述】:

我得到了一个非常简单的带有@Input elements: Observable<Student[]> 的表单案例,它每2 秒更新一次,因此触发了我的表单组件的onChanges,这会导致意外行为,例如重置<input> 值,选中<select><option>等。

我针对这种情况采取的方法是在编辑模式和视图模式下定义组件,同时在编辑模式下从可观察输入取消订阅和在视图模式下重新订阅。

有没有更优雅的,可能是内置的Angular 2,处理这种情况的方法?

提前致谢,任何帮助将不胜感激!

【问题讨论】:

    标签: javascript angular input onchange


    【解决方案1】:

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

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

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

    constructor(private cd: ChangeDetectorRef) {}
    
    ngOnInit() {
      this.inputSubject.subscribe((data) => {
        this.inputService.update(data);
        this.cd.markForCheck();
      })
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 2011-10-08
      • 2021-01-20
      相关资源
      最近更新 更多