2016-12-23 10 views
3

私は、基本的な(変更)ハンドラとngmodelを付けたselect要素を持っています。 ng値を持つ<option>が設定されると、変更ハンドラが起動します。問題は、[(ngModel]はまだ新しい値を持っていないということですngmodelがAngular2に設定された後、選択変更イベントが確実に発生するようにするにはどうすればよいですか?

<div> 
     <button style="margin: 8px 0;" (click)="getNextLink()" class="btn btn-primary btn-sm pull-right">Next Label ></button> 
     <div class="form-group"> 
      <label for="filter-word">Select Word To Filter:</label> 
      <select [(ngModel)]="selectedLabels[selectedLabels.length]" 
        (change)="onChange($event)" 
        class="form-control" 
        id="filter-word" 
        name="filter-word"> 
       <option *ngFor="let label of (primaryTopic.topics) | stringFilter: selectedLabels" [ngValue]="label"> 
        {{label}} 
       </option> 
      </select> 
     </div> 
    </div> 

ここでコンポーネントのコードです:。

public onChange(event: any): void { 
    console.log('event', event); 
    console.log('this.selectedLabels', this.selectedLabels); // undefined 
    debugger; 
    } 

私はngModelが更新されたときにのみ対応するにはどうすればよい

答えて

4

利用代わりngModelChange

(ngModelChange)="onChange($event)" 

どんな順序前夜に指定する方法はありませんntハンドラを実行する必要があります。バインドされたプロパティが更新された後にngModelChange自体がNgModelによって放出されるため、これはあなたのニーズに合っているはずです。

+1

期待どおりに動作します。迅速な対応に感謝します! –

関連する問題