Событие ввода Angular не запускается при установке значения с моделью

Я использую поле ввода, которое вызывает метод, когда значение в нем изменяется. Но когда я устанавливаю значение в поле ввода с помощью ngModel (не набирается вручную), событие «значение изменено» поля ввода не будет запущено.

Поле ввода:

<div>
  <input type="text" id="orderNumberFilter" (input)="updateOrderNumberFilter($event)" [(ngModel)]="orderNumberFilterValue">
</div>

составная часть:

public updateData(evt: any): void {
  .finally(() => {
    this.orderNumberFilterValue = "test"
  })
  .subscribe(
    //get data from backend
  });
}


public updateOrderNumberFilter(evt: any): void {

 //do stuff with the event

}

person WeSt    schedule 15.08.2018    source источник


Ответы (2)


И не сработает, потому что событие input сработает только во время взаимодействия с пользователем.

Вы можете работать с Reactive Forms вместо Template Driven Forms и, используя его функцию valueChanges, вы можете прослушивать изменения значения элементов управления.

Еще один ответ об изменении значения реактивной формы вы можете прочитать здесь

ОБНОВЛЕНО

Вы можете объявить свою функцию, чтобы получить value ввода

public updateOrderNumberFilter(value: any): void {

}

В разметке прикрепите его с помощью $event.target.value

<input type="text" id="orderNumberFilter" (input)="updateOrderNumberFilter($event.target.value)" [(ngModel)]="orderNumberFilterValue">

а также вызвать его в finally и передать value.

person Suren Srapyan    schedule 15.08.2018
comment
Можно ли отправить событие программно? Так что я мог бы вызвать метод updateOrderNumberFilter из finally? - person WeSt; 15.08.2018
comment
Вам просто нужно получить доступ к значению? Что вы хотите сделать с параметром evt? - person Suren Srapyan; 15.08.2018
comment
Мне нужно значение в этом методе, чтобы оценить его и передать в структуру ag-grid. - person WeSt; 15.08.2018

Таким образом, вы можете вызвать метод updateData вручную из того места, где вы обновляете модель (orderNumberFilterValue)

person Malindu Sandaruwan    schedule 15.08.2018