无法在Angular 7的ReactiveForms中设置默认选择值

时间:2019-02-13 17:48:38

标签: angular drop-down-menu angular2-changedetection

changeDetection存在一些问题,因为Angular不会将我的反应性控制值更新到下拉视图中。

我已经用简单的 StackBlitz example 重现了整个问题。

所以基本上我如何才能迫使Angular在下拉菜单中向我显示“阿根廷”作为选定的默认选项?

如果有人给我提示如何解决这个问题,将不胜感激

2 个答案:

答案 0 :(得分:0)

“选择选项”列表似乎不包含您要选择的特定数据。

对于您来说,{ "id": 5, "text": "Argentina" }也应该是this.definitions的一部分。

您可以在声明您的反应形式之前将该对象推入this.definitions

constructor(private fb: FormBuilder){
  this.definitions.push(this.default);
  this.rootFormGroup = this.fb.group({
    control: this.default
  });

或者,您在编写代码时在this.definitions中明确包含该对象。

definitions = [
    {
      "id": 1,
      "text": "Poland"
    },
    {
      "id": 2,
      "text": "UK"
    },
    {
      "id": 3,
      "text": "Germany"
    },
    {
      "id": 4,
      "text": "France"
    },
    { 
      "id": 5, 
      "text": "Argentina" 
    }

  ]

答案 1 :(得分:0)

必须将constructor() { this.dataSource.data = this.people; this.dataSource.filterPredicate = this.tableFilter(); } tableFilter(): (data: any, filter: string) => boolean { let filterFunction = function(data, filter): boolean { let searchTerms = JSON.parse(filter); return data.name.toLowerCase().indexOf(searchTerms.name) !== -1 && data.id.toString().toLowerCase().indexOf(searchTerms.id) !== -1 && data.colour.toLowerCase().indexOf(searchTerms.colour) !== -1 && data.pet.toLowerCase().indexOf(searchTerms.pet) !== -1; } return filterFunction; 对象包含在要绑定到select标签的定义数组中。如果不添加对象,则无法绑定值。

{ "id": 5, "text": "Argentina" }