角度:将输入值重置为上一个值

时间:2019-01-27 16:56:28

标签: angular angular-ngmodel

在Angular 2+中,是否可以通过编程将输入值重置为其先前值?

我有“选择”下拉列表,选择某个值后,如果某些验证失败,则需要将其值重置为上一个值。

如何使用ngModel(模板形式)和formControl(反应形式)实现相同目的? (只需知道两种方法是否可行)。

我已经发现,如果将ngModelChange事件放置在模板中的select标签中的ngModel之前,则在ngModelChange事件中我们将获得更改之前的ngModel值。 参考:https://github.com/angular/angular/issues/11234

但是我认为这种方法不够简洁,有时可能会造成混淆。

1 个答案:

答案 0 :(得分:1)

是的,可以使用反应式表单方法和rxjs运算符pairwise

使用rxjs运算符valueChangespairwise在组件中订阅formControl startWith

示例代码

this.myForm.controls['control1'].valueChanges
  .pipe(startWith(1), pairwise()).subscribe(
    ([prevValue, selectedValue]) => {
      console.log(prevValue); // previous value
      console.log(selectedValue); // new value
    }
 );
} 

您还可以检查有效的DEMO

注意:我使用startWith是因为,成对具有两个值(上一个和当前)时将发出值。因此,请在1中添加默认值startWith(默认选项的值)。