0

Actually, i'm trying to bind the array of object to select input. I'm trying in this way, [(ngModel)]="users[i].roles", where 'users' is outer array and 'roles' is another array inside users. Here, roles is array of key value pairs like,

roles = [{'code': 1, 'desc: ''},{'code': 2, 'desc: ''},{'code': 3, 'desc: ''}]

How can i bind the 'code' from this array.

My HTML code,

 <mat-select placeholder="User Roles" [(ngModel)]="users[i].roles" matTooltip="{{users[i].roles}}" multiple>
    <mat-option *ngFor="let role of userRoles" [value]="role.code">{{role.desc}}</mat-option>
 </mat-select>
Mangesh Daundkar
  • 1,026
  • 1
  • 15
  • 20

3 Answers3

2

try to use *ngFor inside a <div> element

<div *ngFor="let role of roles">
    <input type="number" [(ngModel)]="role.code">
</div>

for more details look here.. How properly bind an array with ngModel in angular 4?

Ganesh
  • 5,808
  • 2
  • 21
  • 41
0

put it in an ngFor :

in .ts :

roles= [{'code': 1, 'desc: ''},{'code': 2, 'desc: ''},{'code': 3, 'desc: ''}]

in .html

<div *ngFor="let role of roles;let index=index">
    <input [(ngModel)]="roles[index].code">
</div>
SoroushNeshat
  • 656
  • 5
  • 11
0

thanks for your help. I solved this problem by modifying code in this way...

for (let user of this.users) {
   user.userRoles = [];
   for(let role of user.roles)
   {
     user.userRoles.push(role.code);
   }
}

In html,

<mat-select placeholder="User Roles" [(ngModel)]="users[i].userRoles" matTooltip="{{users[i].userRoles}}" multiple>
    <mat-option *ngFor="let role of userRoles" [value]="role.code">{{role.desc}}</mat-option>
</mat-select>
Mangesh Daundkar
  • 1,026
  • 1
  • 15
  • 20