changeDetection存在一些问题,因为Angular不会将我的反应性控制值更新到下拉视图中。
我已经用简单的 StackBlitz example 重现了整个问题。
所以基本上我如何才能迫使Angular在下拉菜单中向我显示“阿根廷”作为选定的默认选项?
如果有人给我提示如何解决这个问题,将不胜感激
答案 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" }