typescript 如何在循环中动态命名Angular 模板上div中的引用

oyjwcjzk  于 2023-02-05  发布在  TypeScript
关注(0)|答案(1)|浏览(135)

我正在用Angular 8.3开发一个项目。
我有一个循环(使用 *ngFor),我需要添加的每个div都有一个动态创建的唯一引用名)。
这是我的示例代码:

<div *ngFor="let item of list; let i = index;">
    <div
        cdkDropList
        #done0="cdkDropList"></div>
</div>

下面我有另一个拖放区,必须接收这些元素:

<div
          cdkDropList
          #donesList="cdkDropList"
          [cdkDropListData]="DonesList"
          [cdkDropListConnectedTo]="[done0, done1]"
          class="movie-list"
          (cdkDropListDropped)="onDrop($event)">
            <div *ngFor="let itemList of DonesList" cdkDrag>{{itemList}}</div>
          </div>

我需要动态更改#done0,例如(#done0、#done1、#done2、#done3等)。
我该如何操作?我尝试使用#done{{i}}},但不起作用。
我不知道在这种情况下是否可以使用trackBy以及如何应用它。
非常感谢,

sdnqo3pr

sdnqo3pr1#

引用容器:

<div *ngFor="let item of list; let i = index;" #doneContainer>
  <div cdkDropList></div>
</div>

和在.ts中,节点列表中有不同的引用:

const list = this.doneContainer.childNodes

或者以更有Angular 的方式,这更好,因为它会在必要时更新:

@ViewChildren('doneContainer') list: QueryList<any>;

相关问题