在Angular 2+中,是否可以通过编程方式将输入值重置为其先前的值?
我有'Select‘下拉列表,在选择一个值后,如果某些验证失败,我需要将它的值重置为前一个值。
如何使用ngModel (模板表单)和formControl (反应式表单)实现相同的功能?(只需要知道这两种方法是否可行)。
我已经知道,如果我们在模板的select标记中将ngModelChange事件放在ngModel之前,那么在ngModelChange事件中,我们会在更改之前获得ngModel的值。参考:https://github.com/angular/angular/issues/11234
但我认为这种方法并不简洁,有时可能会令人困惑。
发布于 2019-01-28 02:03:08
是的,可以使用Reactive forms方法和rxjs operator pairwise。
在组件中使用rxjs运算符pairwise和startWith订阅formControl valueChanges
示例代码:
this.myForm.controls['control1'].valueChanges
.pipe(startWith(1), pairwise()).subscribe(
([prevValue, selectedValue]) => {
console.log(prevValue); // previous value
console.log(selectedValue); // new value
}
);
} 您还可以检查正在运行的DEMO
注意:我使用startWith是因为,当它有两个值(prev和current)时,pairwise将发送值。因此在startWith中添加默认值1 (默认选项的值)。
https://stackoverflow.com/questions/54390556
复制相似问题