我正在编写一个使用Custom ngModel的自定义angular2组件。
我面临的问题是ngModel将在另一个绑定之后绑定,比如“@input”。例如,在同一方法上,我更改了ngModel的值和@input的值。在子组件内部,我需要处理ngOnChanges是否发生任何更改。但是看起来@input的值已经改变了,但是ngModel的值仍然是旧的值(我需要在这里获得一些新的值进行一些验证)
以下是关于plunker的演示:
## https://plnkr.co/edit/U6eSZ6GJB6HvHADLyEG2?p=preview ##
等待一些想法。 感谢。
答案 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)