角度-如何为动态尺寸表的数据源中的垫选设置所选值

时间:2019-04-05 09:24:26

标签: angular typescript angular7 material

我正在建立一个mat-table,该mat-table显示数据源中的一些值,并在每行中有一个mat-select,其中有多个select。该表的数据源是一个对象数组(“ CarManufacturer”),其中包含另一个对象数组(“ Brand”)。在选垫中,我显示了所有“品牌”的完整列表。

目前,我无法取消/选择那些“品牌”。它们被标记为已选中或未选中。我无法更改。

我创建了一个函数,该函数返回一个数字数组(品牌ID),该数组将输入mat-select的[value]。这在下拉菜单中标记了CarManufactors数组中的品牌,但是我无法在下拉菜单中选择任何内容。

代码:https://stackblitz.com/edit/angular-skrrhb

我希望我可以更改下拉菜单的值。目前,我无法取消/选择这些值。

1 个答案:

答案 0 :(得分:1)

问题在于<mat-select [value]="getArray(element.brands)" multiple>总是返回相同的值,无论如何。

一种解决方案是在品牌界面中添加brandSelected并在其中存储值:

export interface CarManufacturer {
  id: number;
  name: string;
  brands: Brand[];
  brandsSelected?: number[]; 
}

然后在mat-select中应用双向数据绑定,如下所示:

   <mat-select [(value)]="element.brandSelected" multiple>

您可以在此处查看工作示例:

https://stackblitz.com/edit/angular-ujirgb?file=src%2Fapp%2Fapp.component.html