只有一个 formcontrolname 应该 value.Make 所有其他为空

Only one formcontrolname should have value.Make all others empty

我有一个场景,我有 2 个输入字段 name1,name2.I 想要捕获名称。但是 如果user enter name1,那么name2应该是empty.If user enter name2,让name1empty.Always最新的有值,另外一个应该为空。

 ngOnInit(): void {
  this.form = this.fb.group({
    inputName: ['', []],
    pickerName: ['', []],
    });

 this.handleValueChange()
  }

handleValueChange() {
 this.form.controls['inputName'].valueChanges.subscribe((value) => {
  this.form.controls['pickerName'].reset()
  });

  this.form.controls['pickerName'].valueChanges.subscribe((value) => {
  this.form.controls['inputName'].reset() 
  }); 

}  

这是我试过的,但它会生成一个循环并让 error.How 正确处理这个问题?

FormControl.reset 方法接受带有 emitEvent: boolean 属性 的选项对象,您可以设置它以避免输入以编程方式相互触发。

参见:https://angular.io/api/forms/FormControl#reset

handleValueChange() {
 this.form.controls['inputName'].valueChanges.subscribe((value) => {
  this.form.controls['pickerName'].reset('', {emitEvent: false})
  });

  this.form.controls['pickerName'].valueChanges.subscribe((value) => {
  this.form.controls['inputName'].reset('', {emitEvent: false}) 
  }); 
}