Angular ControlValueAccessor onChanges 不更新表单控件值

Angular ControlValueAccessor onChanges not updating form control value

这里转载component/problem的stackblitz

我构建了一个自定义输入组件:

  1. 采用用户对象数组进行预输入过滤
  2. 将您的选择显示为标签
  3. 表单控件值是所选用户的数组users[]

问题是 adding a result (input-tags.component) 没有更新表单 (app.component),我不明白为什么。

输入-tags.component.ts

addTag(contact: any) {
   ...
   this.onChange(this.tags); // update controller value
}

app.component.ts

this.form.controls['users'].valueChanges.subscribe(data => {
  this.control = data; // always null
});

onChanges 按预期调用,除表单控件始终为空外,一切正常。为什么?

错误似乎出在您的 addTag() 函数中。您正在尝试访问 typeaheadSource 中不存在的参数。将 contact.userId 更改为 contact.id 就可以了。