Angular: FormControl valueChanges Наблюдаемые триггеры для всех изменений - PullRequest
0 голосов
/ 02 июля 2019

FormControl valueChanges Observable работает так, как и должно быть.В моем случае мне нужно прекратить запуск valueChanges для всех предыдущих изменений в поле ввода, кроме текущего значения.Я пытался с помощью следующего кода, чтобы сделать это -

private getAutocompleteSuggestions(input){
    return this.SS.searchProducts(parseInt(this.filter), '', input);
}


private searchSuggestionsAPIRequest(input){
    this.queryField.valueChanges
        .debounceTime(1000)
        .distinctUntilChanged()
        .switchMap((input) =>  this.getAutocompleteSuggestions(input))
        .subscribe( res => {
          // The res is triggered for all value changes in 
          // queryField formcontrol

          // Tried with following solution to stop emit previous 
          // changes but it does not work

          this.queryField.setValue(input, { emitEvent: false });

    });
} 

Я искал все возможные способы остановить выброс предыдущих значений, но получил это решение -

this.queryField.setValue(input, { emitEvent: false });

Я думаю,Я что-то там упускаю.Было бы замечательно, если есть какое-либо дальнейшее решение или документация.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 июля 2019

ValueChange является наблюдением, и каждый раз, когда вы делаете ввод, он будет вызывать выброс.Вы можете вызвать api на карте переключателей и подписать на него свой результат с последним значением из ввода и оставить поведение valueChanges как есть.

searchBook() {
    this.bookId.valueChanges.pipe(
      debounceTime(1000),
      distinctUntilChanged(),
      switchMap(input => {
        this.getAutocompleteSuggestions(input)).subscribe(res =>{
          //DO you required processing
        })
      })
    ).subscribe(model => model);
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...