【问题标题】:Angular trackBy not working in nested *ngForAngular trackBy 不能在嵌套 *ngFor 中工作
【发布时间】:2019-03-20 19:47:04
【问题描述】:

我的组件有点像

<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 数组或向其添加新元素时,它正在更新数据集的更新/添加顺序。

我浏览了各种帖子,但还没有找到有用的东西。 我在这里做错了什么吗?任何帮助将不胜感激。

【问题讨论】:

    标签: angular ngfor angularjs-track-by


    【解决方案1】:

    trackByFn 的实现有误。

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

    所以你的function 应该是 -

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

    【讨论】:

    • 试过但没用,我仍然可以看到 DOM 中的反射
    • 你从函数返回什么?请分享您的代码。
    • 你有另一个 ngFor 供用户使用。所以最好为用户写另一个trackByfunction
    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2021-08-15
    • 2020-10-25
    • 2018-06-11
    • 1970-01-01
    • 2018-10-13
    • 2018-03-31
    相关资源
    最近更新 更多