如何在angular 2中禁用多个文本框

如何在angular 2中禁用多个文本框,angular,form-fields,Angular,Form Fields,我有n行,其中包含textbox和select box。当我使用angular 2更改同一行中选择框的值时,我尝试禁用文本框 我的代码如下: <table> <tr> <td><input type="text" (disabled)="isDisabled(data.rowIndex)"</td> <td> <select (onValueChanged)="test(data.rowIndex)"&g

我有n行,其中包含textbox和select box。当我使用angular 2更改同一行中选择框的值时,我尝试禁用文本框

我的代码如下:

<table>
  <tr>
    <td><input type="text" (disabled)="isDisabled(data.rowIndex)"</td>
    <td> <select (onValueChanged)="test(data.rowIndex)">
           <option>Yes</option>
           <option>No</option>
    </td>
   </tr>
   <tr>
    <td><input type="text" (disabled)="isDisabled(data.rowIndex)"</td>
    <td> <select (onValueChanged)="test(data.rowIndex)">
           <option>Yes</option>
           <option>No</option>
    </td>
   </tr>
   .
   .
   .
</table>

component.ts

tabNumber: number = -1;

test(valueID){
        this.tabNumber = valueID;
}

isDisabled(num){
        return this.tabNumber === num;
    }

请参见以下内容:

html:

<table>
   <tr *ngFor="let item of items; let i = index">
    <td><input type="text" [disabled]="isDisabled(i)"/></td>
    <td> <select (change)="toggle($event,i)">
           <option value="yes">Yes</option>
           <option value="no">No</option>
          </select>
    </td>
   </tr>

</table>

我认为,[disabled]=“isDisabled()”中有一个pbm。此函数一直被调用。所以它会检查tabNumber===Num。这就是为什么除了当前选中的字段之外,其他字段都会被启用。你知道这个问题吗。问题是有一个变量:
tabNumber
ang它正在被所有的选择标记更新。你需要一个数组来跟踪每个选择标记。你能提供语法吗。@绿色计算机看到更新了,有一个plunker链接给你。你很好:)
export class AppComponent {
   items = [{value : "hi"},{value : "hi"},{value : "hi"},{value : "hi"}]
   rows: number[] = [];

  isDisabled(index) {
    return this.rows[index] === -1;
  }

  enable(index){
    this.rows[index] = 1;
  }

  toggle($event,index){
    let selectElement = $event.target; 
    let value = selectElement.options[selectElement.selectedIndex].value;
    if(value === "yes"){
       this.enable(index);
    }else{
       this.disable(index);
    }
  }

  disable(index){
    this.rows[index] = -1;
  }
}