我的角度应用程序中有一个问题,如果项目在许可证中,我想更改ngModel的值,但是我在.ts文件中处于循环中,我认为ngModel接受了test的最后一个值,但有些项不在许可证中,我想将ngModel的值设置为false。
.html文件:
<div *ngFor="let elt of element">
<input type="checkbox" #checkbox class="input_checkbox" [ngModel]="test" name="itemBoolean_{{elt.item.id}}" id="custom_item_{{elt.item.id}}" >
</div>
.ts文件:
element : item[];
itemInLicense : ItemLicense[];
test : boolean = false ;
ngOnInit() {
this.itemInLicense.forEach((elt)=>{
if(document.getElementById("custom_item_"+elt.itemId))
this.test = true ;
else
this.test = false ;
})
}
答案 0 :(得分:2)
如果绑定的变量也为index
,则可以在迭代中使用Array
数字:
然后,您需要如下更改属性test
:
test : boolean[] = [] ;
ngOnInit() {
this.itemInLicense.forEach((elt, index)=>{
if(document.getElementById("custom_item_"+elt.itemId)){
this.test[index] = true ;
} else {
this.test[index] = false ;
});
}
并按如下所示修改HTML:
<div *ngFor="let elt of element; i=index">
<input type="checkbox"
#checkbox
class="input_checkbox"
[ngModel]="test[i]"
name="itemBoolean_{{elt.item.id}}"
id="custom_item_{{elt.item.id}}" >
</div>