javascript - 根据Angular中子循环中的数据隐藏父项中的项目
问题描述
我有以下 HTML 代码片段,我在其中循环通过我的 json 响应来显示数据。它是一个带有 *ngIf 的嵌套循环,如下面的 HMTL 中所示。我需要的是基于子循环中的一个项目的值,我想在父循环中隐藏/显示一个项目。
基本上我在子循环中有mtr.eu这是一个输入类型。最初它将是空的,当用户在其中输入任何值时,我想在下面显示的父项中显示该项目。实现这一目标的最佳方式是什么。
<div class="row accordian-head" accordion-heading>
<span class="w20">MPRN: {{header.gpr}}</span>
<span class="w20">Meter ID: {{header.num}}</span>
<span class="w20" *ngIf="mtr.eu">New data added</span>
</div>
<div class="accordian-inner-content">
<table class="table table-borderless">
<thead>
<tr class="meter-reading-header">
<th scope="col">Last read date</th>
<th scope="col">Last meter read</th>
<th scope="col">New reading (kWh)</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let mtr of header.mtrs" class="meter-reading-content">
<td>{{mtr.lrd}}</td>
<td>{{mtr.lrv}}</td>
<td>
<input type="number" name="newReading" class="form-control new-reading-input"
placeholder="eg. 12345" [(ngModel)]="mtr.eu">
</td>
</tr>
</tbody>
</table>
</div>
</accordion-group>
解决方案
您不能在父节点中使用子变量。相反,您可以创建一个 getter,您可以在其中检查具有 mu 值的记录。根据该 getter 值,您可以在父元素上显示记录。
您唯一需要做的就是编写一个函数并将您的项目列表传递给它。在里面使用过滤器来检查所需的数据(在你的情况下是 mt.mu)。然后返回数据。根据返回的数据,您可以显示元素。
但是当您从模板调用任何函数时,它会递归调用该函数。
因此,作为最佳实践,我更喜欢使用管道来执行相同的逻辑。这使我的代码变得更好。
我希望这可以帮助您实现您的需求。
推荐阅读
- racket - 球拍 - 定义结构和抽象列表功能
- google-apps-script - 是否可以更新现有的数据验证帮助文本?
- json - 在逻辑应用程序 JSON 数组中解析单个对象的抛出错误但对于多个对象它工作正常
- json - 'Int' 不能转换为 'CGFloat' SwiftUI 误导性错误
- android - 我很困惑android中的ffmpeg文件是什么
- python - 处理pandas groupby中的项目很慢?我们应该使用哈希图吗?
- java - JavaFX中如何让TableView根据其内容自动改变高度?
- python - Discord.py 检查 Channel 是否为 DM
- excel - 如果单元格与excel中的计数器单元格匹配,是否有办法自动将一行提取到另一个电子表格中?
- python - 将详细信息附加到字典时出现键错误