在 Material Select 中添加数组类型值 Angular
Add Array Type value in Material Select in Angular
我正在尝试将数组类型绑定到 Angular 项目中的 Material Select,但它返回以下错误。
ERROR Error: Uncaught (in promise): Error: Value must be an array in multiple-selection mode.
这是我的代码,
模板
<ng-template kendoRippleContainer kendoGridEditTemplate let-dataItem let-column="column" let-formGroup="formGroup">
<mat-form-field>
<mat-label>Roles</mat-label>
<mat-select [formControl]="formGroup.get(column.field)" multiple [(value)]="dataItem">
<mat-option *ngFor="let role of roleList" [value]="role._id">{{role.roleName}}</mat-option>
</mat-select>
</mat-form-field>
</ng-template>
打字稿
createFormGroup = dataItem => this.fb.group({
'_id': new FormControl(dataItem._id),
'roles': [new FormControl(dataItem.roles)]
})
服务返回JSON对象
createdDate: Thu Jul 25 2019 21:48:06 GMT+0100 (British Summer Time)
{} methodAlias: "List Users"
methodName: "list" methodType: "POST"
moduleName: "user" roles:
Array(3) 0:
{_id:
"5caf9fb37147ed08f3f538b3", roleName: "SuperAdmin"} 1: {_id:
"5caf9fc07147ed08f3f538b7", roleName: "Admin"} 2: {_id:
"5cafa9d72b4aaf0017bfef09", roleName: "Manager"} length: 3
proto: Array(0)
_id: "5d3a15861f276d6560ee7f55"
很确定你只需要这样做:
createFormGroup = dataItem => this.fb.group({
'_id': [dataItem._id],
'roles': [dataItem.roles.map(r => r._id)]
})
多个 select 想要一个具有数组值的 FormControl,并且这些值需要与您绑定到选项值的值相匹配。不是一个包含单个 FormControl 的数组,使用 formbuilder 的语法看起来更像我这里的语法。它基本上是:
[key:string]: [value, validators, asyncValidators]
这可能不正确,因为我不确定 column.field
等于什么,应该是 'roles'
还收回模板中值的 2 种方式绑定,要么使用一种方式绑定,要么根本不使用它,因为你使用的是反应形式
我正在尝试将数组类型绑定到 Angular 项目中的 Material Select,但它返回以下错误。
ERROR Error: Uncaught (in promise): Error: Value must be an array in multiple-selection mode.
这是我的代码,
模板
<ng-template kendoRippleContainer kendoGridEditTemplate let-dataItem let-column="column" let-formGroup="formGroup">
<mat-form-field>
<mat-label>Roles</mat-label>
<mat-select [formControl]="formGroup.get(column.field)" multiple [(value)]="dataItem">
<mat-option *ngFor="let role of roleList" [value]="role._id">{{role.roleName}}</mat-option>
</mat-select>
</mat-form-field>
</ng-template>
打字稿
createFormGroup = dataItem => this.fb.group({
'_id': new FormControl(dataItem._id),
'roles': [new FormControl(dataItem.roles)]
})
服务返回JSON对象
createdDate: Thu Jul 25 2019 21:48:06 GMT+0100 (British Summer Time)
{} methodAlias: "List Users" methodName: "list" methodType: "POST" moduleName: "user" roles: Array(3) 0: {_id: "5caf9fb37147ed08f3f538b3", roleName: "SuperAdmin"} 1: {_id: "5caf9fc07147ed08f3f538b7", roleName: "Admin"} 2: {_id: "5cafa9d72b4aaf0017bfef09", roleName: "Manager"} length: 3 proto: Array(0) _id: "5d3a15861f276d6560ee7f55"
很确定你只需要这样做:
createFormGroup = dataItem => this.fb.group({
'_id': [dataItem._id],
'roles': [dataItem.roles.map(r => r._id)]
})
多个 select 想要一个具有数组值的 FormControl,并且这些值需要与您绑定到选项值的值相匹配。不是一个包含单个 FormControl 的数组,使用 formbuilder 的语法看起来更像我这里的语法。它基本上是:
[key:string]: [value, validators, asyncValidators]
这可能不正确,因为我不确定 column.field
等于什么,应该是 'roles'
还收回模板中值的 2 种方式绑定,要么使用一种方式绑定,要么根本不使用它,因为你使用的是反应形式