2

これは私のコードです:

HTML:

<div *ngFor="let reject of rejects, let i = index">
    <h2>{{reject.reason}}</h2>
    <input type="text" [(ngModel)]="reject.reason" [ngFormControl]="inputField">
    <rt-dropdown (selectedReason)="selectReason($event.value, i)"></rt-dropdown>
</div>

そして私のmainTS:

class {
    inputField = new Control();


    constructor( private _broadcastService : BroadcastService) {
        this.inputField.valueChanges
           .debounceTime(300)
           .subscribe(term => this._dropdownComponent.query(term));
    }
}



selectReason(text, index) {
 this.rejects[index].reason = text;
}

RT ドロップダウンは、理由をクリックしたときにのみ理由を送信します。

問題は、理由をクリックすると {{reject.reason}} が変更されますが、入力フィールドが変更されないことです。

ページが更新されていないようですが、これについて経験した人はいますか?

ありがとうございました

4

2 に答える 2

1

代わりに次のことを試します。

<div *ngFor="let reject of rejects, let i = index">
  (...)
  <input type="text" [(ngModel)]="rejects[i].reason" 
         [ngFormControl]="inputField">
</div>

編集

対応するコントロールにコントロール配列を使用します。

let inputFieldControls = new ControlArray([]);

for(let i = 0 ; (...) ; i++){
  inputFieldControls.push(new Control('' , Validators.required));
}

次のように使用します。

<div *ngFor="let reject of rejects, let i = index">
  (...)
  <input type="text" [(ngModel)]="rejects[i].reason" 
         [ngFormControl]="inputFieldControls[i]">
</div>
于 2016-06-11T18:48:50.363 に答える
1
<div *ngFor="let reject of rejects let idx=index">
    <h2>{{reject.reason}}</h2>
    <input type="text" [(ngModel)]="rejects[idx].reason" [ngFormControl]="inputField">
    <rt-dropdown (selectedReason)="selectReason($event.value, i)"></rt-dropdown>
</div>

また、同じ数が必要ですinputField = new Control()(おそらく、inputFieldsエントリがrejectsあり、それらを参照するための配列

[ngFormControl]="inputFields[idx]"

それ以外の場合、すべての入力要素が同じControlインスタンスを参照します。

于 2016-06-11T18:52:21.140 に答える