角度6:
显示列表
<ng-container *ngFor="let list of lists">
<div class=card>
<h2>{{list.name}}</h2>
<ul>
<li *ngFor="let item of list.items">{{item}}</li>
</ul>
///.... add an item to list (code below see all options)....
</div>
添加项目到列表:选项1
<input type="text" #addItemTitle>
<button [disabled]="!( addItemTitle.value.length > 4)"
(click)="addItem( addItemTitle.value )">Add Item</button>
详细信息(选项1):在过去3个月内完成此操作并且完美无缺 . 现在我想添加验证 . 仅在输入框外部单击时才会更新值 .
添加项目到列表:选项2
<input type="text" [(ngModel)]="addItemTitle">
<button [disabled]="!(addItemTitle?.length > 4)"
(click)="addItem( addItemTitle )">Add Item</button>
详细信息(选项2):这里的问题是所有ngModel都表现为一个,所以更新更新所有其他(bcz . ngModel是相同的),同样适用于FormControlDirective
添加项目到列表:选项3(当前使用)
<input type="text" [(ngModel)]="addItems[i]">
<button [disabled]="!((addItems[i])?.length > 4)"
(click)="addItem( addItems[i] )">Add Item</button>
细节(选项3):这是我目前使用的,我在component.ts中声明了addItems = [],它可以工作 .
My Concerns:
-
稳定性:选项3是否良好......还有其他建议 .
-
可扩展:我也必须编辑/删除项目,因此在ngfor中嵌套ngfor,因此addItems = []将不起作用,我可能必须声明addItems = [[]],addItems [i] [j]
-
因为,我的主要目标是验证 . FormControlDirective提供了很好的验证控制,但addItems = [a,b,c],其中a,b,c是新的FormControl,但我不知道数字......
编辑:
我找到了一个更好的解决方案:使用组件,创建一个名为InputHandlerCmp的额外组件,使用@Input和更改将数据传递给它 . 这种方式分离每个ngModel或FormControlDirective(更好的验证)