角度-ngFor变量上的函数

时间:2018-08-28 15:32:14

标签: angular mean-stack

假设我有2张桌子;书和作者。作者表中包含对书籍ID的引用。

在Angular中,我想遍历作者,然后遍历该作者的书:

<div id="authors" *ngFor="let author of authors">
    <h1>{{author.name}}</h1>

    <div id="books" *ngFor="let book_id of author.books" ng-init="let book = getBook(book_id)">
        <h2>{{book.title}}</h2>
        .....
    </div>

</div>

这里的问题是ng-init不在Angular 2+中。我需要能够运行一个函数,以便能够从数据库中获得这本书,因为作者仅持有该书的引用。

我已经看到了一些使用自定义指令的潜在解决方案。 1 2

我的问题是,在这种情况下什么是最佳实践?还是该问题所在?在这种情况下,我应该在早期阶段更好地处理数据?我这样做的原因是,如果我不需要某种类型的书,则可以隐藏(使用ngIf)它们,而无需调用DB来获取书(这样更有效?)。

我对指令解决方案提出了一些质疑,因为我很惊讶这并没有内置在Angular中,因为这似乎是一个潜在的普遍问题,除非他们希望您使用更好的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以像在https://alligator.io/angular/ngif-new-features-angular4/中显示的那样使用“ ngIf”

<div id="authors" *ngFor="let author of authors">
    <h1>{{author.name}}</h1>
    <div id="books" *ngFor="let book_id of author.books">
       <ng-container *ngIf="getBook(book_id);let book">
        <h2>{{book.title}}</h2>
        .....
       <ng-container>
    </div>
</div>

但是在这个想法之间选择并转换数组