如何在循环中执行ngModel?

时间:2019-02-28 13:00:53

标签: angular loops ngmodel

我的角度应用程序中有一个问题,如果项目在许可证中,我想更改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 ;

     })

}

1 个答案:

答案 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>