Operation-6ren">
gpt4 book ai didi

angular - 如何结合 ngIf 和 ngFor

转载 作者:行者123 更新时间:2023-12-03 18:15:40 25 4
gpt4 key购买 nike

我是 Angular 的新手。

我想打印与经销商有关的产品 list 。为此,我考虑结合 *ngFor *ngIf 所以这是一个代码:

<div class="distributors-here ui-g-12" *ngIf="distributors">
<h2 >Distributors <i class="fa icon fa-plus"(click)="showDialog()"></i></h2>
<p class="error-message" *ngIf="errorMessage.length >0">Operation couldn't be executed:</p>
<p class="error-message">{{errorMessage}}</p>
<ul class="distributors-list ui-g-12">
<li class="distributor-item ui-md-3 ui-g-6" *ngFor="let distributor of distributors ">
<i class="fa icon fa-times remove-distributor"(click)="removeDistributor(distributor.id,distributor.name)"></i>
<div class="distributor-item-content">
<p>id: {{distributor.id}}</p>
<p>name: {{distributor.name}}</p>
<div *ngIf="products">
<p>products</p>
<ol>
<li *ngFor="let product of products" *ngIf="product.distributor.id == distributor.id">dist</li>
</ol>
</div>
</div>
</li>
</ul>
</div>

所以我想遍历 products 数组,如果产品的经销商 id 与其他数组中的经销商 id 匹配,我将打印新的 li 元素。

不幸的是,我收到一个错误:

Can't have multiple template bindings on one element. Use only one attribute named 'template' or prefixed with *

[ERROR ->]*ngIf="product.distributor.id== distributor.id"



有谁知道如何重构这段代码以使其工作?

最佳答案

Angular 在同一个元素上不支持多个结构指令,所以你应该使用 ng-container辅助元素在这里。仅供引用 ng-container不会向 DOM 添加额外的元素(示例 2 中的 ul 确实被添加到 DOM)。

示例 1

<ng-container *ngFor="let product of products" >
<li *ngIf="product.distributor.id == distributor.id">{{ product?.name }}</li>
</ng-container>

或者

示例 2
<ul *ngFor="let product of products">
<li *ngIf="product.distributor.id == distributor.id">
{{log(thing)}}
<span>{{thing.name}}</span>
</li>
</ul>

关于angular - 如何结合 ngIf 和 ngFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49404844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com