角度跟踪在嵌套* ngFor中不起作用

时间:2018-10-16 09:51:26

标签: angular ngfor angularjs-track-by

我的组件有点像

<div class="users-list" *ngIf="datasetPermission !== undefined">
    <div *ngFor="let userpermission of datasetPermission; trackBy : trackByFn">
      <span *ngFor="let user of userpermission.users">
        <span *ngIf="user">
        <span class="shared-user"><span>{{user.emailId}}</span><span ><span  class="close icon-key" style=" padding: 0;" (click)="viewPermission($event,userpermission.permissionType,user)"></span><span class="close" style=" padding: 0;" (click)="removeUser(user)">×</span></span></span>
      </span>
      </span>
    </div>
  </div>

trackBy作用为

    public trackByFn(index, userpermission) {
      console.log(userpermission.permissionType);
      return userpermission.permissionType;
    }

内部权限我拥有分配给该权限的用户数组。我可以从x <> y权限集中更新用户。 当我更新datasetPermission数组或向其中添加新元素时,它正在更新要更新/添加的数据集的顺序。

我已经看过很多文章,但是还没有找到有用的东西。 我在这里做错什么吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

trackByFn的实现错误。

trackBy function始终接受两个参数index和当前参数item,并且函数必须返回唯一标识符。

所以您的function应该像-

public trackByFn(index, userpermission) {
    return userpermission.id; //check what unique property you have in permission class.
  }