我有一个 select 元素,它附加了一个基本(更改)处理程序和一个 ngmodel。当设置了具有 ng 值的 <option> 时,将触发更改处理程序。问题是 [(ngModel] 还没有新值。

<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 已更新时,我该如何响应?

最佳答案

使用 ngModelChange 代替:

(ngModelChange)="onChange($event)"

无法指定应以何种顺序执行事件处理程序。因为 ngModelChange 本身是在绑定(bind)属性更新后由 NgModel 发出的,所以这应该符合您的需求。

关于javascript - 如何确保在 Angular2 中设置 ngmodel 后触发选择更改事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41306585/

10-12 23:20