【发布时间】:2018-06-04 11:47:19
【问题描述】:
我有一个显示几个列表项的 ngFor 循环。每个列表项都包含一个标题。它还包含一个输入,其中包含我想要隐藏的标题。当我点击一个编辑按钮时,我希望显示该选定项目的输入,而不显示其他项目。解决这个问题的最佳方法是什么?
以下是我目前所拥有的。但是,当启动 'editItem' 并将 'editable' 设置为 true 时,会出现所有项目的输入框,而不仅仅是我单击的那个。
editable = false;
editItem(){
this.editable = true;
}
<ul>
<li *ngFor="let item of items | async">
<div class="item">
<div class="title"> {{ item.item_title }}</div>
<input #newItemName type="text" [(ngModel)]="this.item.item_title" *ngIf="editable"/>
<i aria-hidden="true" (click)="editItem()"></i>
</div>
</li>
</ul>
任何帮助将不胜感激:)
【问题讨论】:
-
这是将列表项抽象为单独组件的好地方。如果你这样做了,那么你的代码就可以工作了。
-
最好的方法是检索您的 TS 中的项目列表。将
editable字段添加到客户端的每个项目items.forEach(item => item['editable'] = false)然后*ngIf="item.editable" -
很简单,但提供一个 UI 示例!输入/秒和编辑按钮/秒。这些是如何工作的?编辑按钮只出现在选定的元素上?元素是如何选择的?
标签: angular typescript angular-ng-if