ngOnChanges后自定义ngmodel绑定

时间:2017-04-19 04:19:37

标签: angular angular2-directives

我正在编写一个使用Custom ngModel的自定义angular2组件。

我面临的问题是ngModel将在另一个绑定之后绑定,比如“@input”。例如,在同一方法上,我更改了ngModel的值和@input的值。在子组件内部,我需要处理ngOnChanges是否发生任何更改。但是看起来@input的值已经改变了,但是ngModel的值仍然是旧的值(我需要在这里获得一些新的值进行一些验证)

以下是关于plunker的演示:

## https://plnkr.co/edit/U6eSZ6GJB6HvHADLyEG2?p=preview ##

等待一些想法。 感谢。

1 个答案:

答案 0 :(得分:1)

您可以在一个位置聚合更改并在那里进行验证。 为模型和最大值创建两个主题,在那里推送更改并组合可观察对象进行验证。

   ngOnChanges(changes: SimpleChanges) {
      alert("current model " + this.value + "--- current maxinum " + changes.maximum.currentValue);
      this.maximum$.next(this.maximum);
   }

   //From ControlValueAccessor interface
   writeValue(value: any) {
    if (value !== this.innerValue) {
        this.model$.next(value);
        this.innerValue = value;
    }
  }

  Observable.combineLatest(this.maximum$, this.model$).
    subscribe(validateHere)