以编程方式更改表单输入值时,不会触发NgForm.valueChanges

时间:2018-07-26 11:22:54

标签: angular angular-forms

在下面的代码段中,当我更改变量(selectedBot)的值时,该变量以编程方式({{1} 1}}),input订阅回调处理程序未触发。但是,如果我输入内容,则会按预期触发该回调。

我有两个问题:

  1. 为什么会这样?
  2. 如何使其工作?

app.component.html

name="bot_id"

app.component.ts

(click)="botSelected(bot)

1 个答案:

答案 0 :(得分:3)

自己触发检测。

botSelected(bot) {
  this.selectedBot = bot;
  this.form.updateValueAndValidity();
}

我还建议您使用正确的函数来设置表单的值。这意味着使用[(ngModel)]FormControl.prototype.setValue

编辑 this stackblitz之后,只需使用[(ngModel)]将输入绑定到变量即可,它应该可以工作。