2 回答

TA贡献1818条经验 获得超8个赞
show变量是全局的,更新显示值将反映所有app-field组件,因此您需要单独确定并指定每个组件的显示/隐藏变量。
为此,您应该在字段对象内添加一个显示成员,如下所示:
<ng-container *ngFor="let field of fields">
<button (click)="field.show = !field.show">Show</button>
<ng-container *ngIf="field.show">
<app-field [fieldInfo]="field"></app-field>
</ng-container>
</ng-container>
也找到了类似的解决方案,检查这个答案

TA贡献1780条经验 获得超4个赞
我只需要在设置为可见时将组件附加到 DOM。
父组件内部:
public showField: any = {};
然后在父组件模板中:
<ng-container *ngFor="let field of fields">
<button (click)="showField[childField.id] = !showField[childField.id]">Show</button>
<ng-container *ngIf="showField[childField.id]">
<app-field [fieldInfo]="field"></app-field>
</ng-container>
</ng-container>
*ngIf
这会在is时破坏组件false
,这正是我在这种情况下所需要的。
添加回答
举报