无法通过ngOnInit方法在formControl上设置值

时间:2019-10-23 10:04:38

标签: angular angular-material

我以Material Select为例,尝试通过ngOnInit方法设置默认值,如下所示:

ngOnInit(): void {
  this.animalControl.setValue({name: 'Cat', sound: 'Meow!'});
}

但是它没有在选择中显示默认值(只有Meow)。我不知道为什么。

stackblitz

3 个答案:

答案 0 :(得分:3)

此处的错误不是由于您的FormControl未在ngOnInit上正确填充,而是您的ngFor筛选器通过了列表animals: Animal[],其引用与您的新对象{ {1}},如果您在动物列表中传递一个对象,它将具有正确的引用并正确显示动物名称的值。

示例:

{name: 'Cat', sound: 'Meow!'}

答案 1 :(得分:1)

代替

this.animalControl.setValue({name: 'Cat', sound: 'Meow!'});
通过调用动物数组

设置animalFormControl的值。 通过查看以下实现来更新代码

this.animalControl.setValue(this.animals[1]);

答案 2 :(得分:1)

这里在工作example

  

您必须传递数组数据,而不是传递新对象

ngOnInit(): void {
    this.animalControl.setValue(this.animals[0]);
  }