输入ngModel in * ngFor绑定所有输入的相同值

时间:2017-08-09 16:11:29

标签: angular angular2-forms angular4-forms

<tbody>
    <tr *ngFor="let trxList of trxNumberList; let i= index">
        <td>{{i}}</td>
        <td>
            <input type="text" name="trxNumber-{{i}}" class="form-control" minlength="1" maxlength="20" [(ngModel)]="trxList.trxNumber" />
        </td>
    </tr>
</tbody>

这是我的表体,当我键入第一个输入框时,所有其他输入都绑定到此值。附图。请帮忙。

enter image description here

编辑:

组件代码:

trxNumberObj = new Transaction;

ngOnInit() { 
  for(var i= 0 ; i <= 10; i++ ){ 
    this.trxNumberObj.count = i; 
    this.trxNumberList.push(this.trxNumberObj); 
  } 
}

2 个答案:

答案 0 :(得分:3)

使用以下

while($row = fgetcsv($ch)) {

    $matched = FALSE;

    foreach ($row as $column){

        $regular_expression = sprintf("/%s/",$regValue);

        if (preg_match($regular_expression,$column)){
            $match=TRUE;
        }      
    }

    if ($match) {
        echo '<div>' . implode(' | ', $row) . ' </div>';
    }
}

这应该可以解决问题。让我知道它是否不存在

答案 1 :(得分:1)

从您的评论中选择以下代码:

trxNumberObj = new Transaction;

ngOnInit() { 
  for(var i= 0 ; i <= 10; i++ ){ 
    this.trxNumberObj.count = i; 
    this.trxNumberList.push(this.trxNumberObj); 
  } 
}

模板中的这种行为是因为JS中的对象是可变的。所以你现在正在做的是将相同的对象推送到数组,这意味着数组中的所有对象都引用了相同的对象。您需要做的是在数组中推送新对象:

ngOnInit() { 
  for(var i= 0 ; i <= 10; i++ ){ 
    this.trxNumberList.push({count:i++});  // push new object every time!
  }
}

您似乎拥有对象的模型,因此请在上面的代码中进行相应调整。