javascript - Angular:在 ngFor 内绑定 ngIf
问题描述
我正在尝试在每个列表项上使用条件填充列表,其中条件可以通过用户输入进行更改。
例如:
app.component.ts
private check = true;
private some = [
{name: 'ABC', condition: true},
{name: 'def', condition: this.check},
{name: 'GHI', condition: true}
];
app.component.html
<div *ngFor="let item of some">
<div *ngIf="item.condition">
{{item.name}}
</div>
</div>
<select [(ngModel)]="check">
<option [value]="true">true</option>
<option [value]="false">false</option>
</select>
在这里,我有一个列表,['ABC', 'def', 'GHI']
我想始终显示其中的一些元素,(condition: true)
而对于其余的,我将条件放在一个变量(check)
中。
列表正在正确加载,但在(check)
通过下拉列表更改条件变量时,没有反映更改(列表未更新)。
任何帮助将非常感激!
解决方案
您必须使用一个对象将“已检查”属性链接到数组。
此外,如果条件为假,您应该使用<ng-container>
它以便不生成任何 HTML。
<!-- HTML -->
<ng-container *ngFor="let item of some">
<div *ngIf="item.condition">
{{item.name}}
</div>
</ng-container>
<select [(ngModel)]="myFakeForm.check">
<option [value]="true">true</option>
<option [value]="false">false</option>
</select>
// TS
public myFakeForm = { check: true }
public some = [
{name: 'ABC', condition: true},
{name: 'def', condition: this.myFakeForm.check},
{name: 'GHI', condition: true}
];
推荐阅读
- python - 在单独的线程中从 Tensorflow 模型返回层激活和权重
- sql-server - SQL 通过 OUTPUT 将数据插入 TempTable 以获取未插入的数据
- c# - 如何在 Unity 中使用光标仅移动人形机器人的某个身体部位?
- excel - 根据 Excel 中的表创建众数值列表
- python - 提取特定文件在python中不起作用
- php - Json如何显示信息
- ant - 如何使用 ant 运行包含 set define off 的 sql 文件
- angular - Angular 6 出现新错误
- c# - “ClickOnce 不支持”Visual Studio 错误?
- sql - PROC SQL 左连接