2

我使用 Angular 8 和 ng-zorro 版本 8.2.1。

我有一张nz 卡,请参阅https://ng.ant.design/components/card/en*ngFor重复。对于这些操作,我需要访问*ngFor的属性,但事实证明我无法从模板中访问它。

<ng-template #boxActionDetails>
    <p>{{box.id}}</p>
</ng-template>
<nz-card *ngFor="let box of boxes" nzTitle="{{box.title}}" [nzActions]="[boxActionDetails]">
     <p>{{box.description}}</p>
</nz-card>

在执行上面的代码时,我得到以下js错误

TypeError:无法读取未定义的属性“id”

4

2 回答 2

2

您可以ng-template在循环体中声明 ,如下所示:

<nz-card *ngFor="let item of [true, true, true]; index as i"
         nzTitle="Card title" 
         [nzActions]="[action]">
  <p>Card content</p>
  <p>Card content</p>
  <p>Card content</p>
  <ng-template #action>
   <button nz-button>{{i}}</button>
  </ng-template>
</nz-card>

现场演示

于 2019-09-04T11:02:27.907 回答
0

不幸的是,我找不到任何解决方案来解决这个问题,所以我想出了以下解决方法:

使用[attr.boxid]="box._id"将数据存储在 html 中

<nz-card *ngFor="let box of boxes" nzTitle="{{box.title}}"
            [nzActions]="[boxActionLearn, boxActionEdit, boxActionDetails, boxActionDelete]" class="box" [attr.boxid]="box._id">
            <p>{{box.description}}</p>

单击具有(click)="actionDetails($event)"的操作时,使用事件处理程序调用通用函数

<ng-template #boxActionDetails>
        <i nz-icon nzType="unordered-list" (click)="actionDetails($event)"></i>
</ng-template>

在动作内部,通过偶数目标迭代到包含数据的父级,并用于进一步处理。

actionDetails(event) {
    var target = event.target || event.srcElement || event.currentTarget;
    var boxid = target.parentNode.parentNode.parentNode.parentNode.parentNode.attributes.boxid.nodeValue;
}
于 2019-09-01T10:24:03.613 回答