У меня есть FormControl / сервис, который обновляется при вводе пользовательских типов в поле следующим образом:
term = new FormControl();
page = new BehaviorSubject(1);
..
..
// Call to search
search(this.term.valueChanges, this.page);
// Search definition
search(term: Observable<string>, page: BehaviorSubject<number>, debounceDuration = 400) {
return term.debounceTime(debounceDuration)
.distinctUntilChanged()
.switchMap(term => this.productSearch(term,page.getValue()));
}
Это работает, как и ожидалось, поэтому, если пользователь вводит слово «запустить» и через несколько секунд «работает», он запускает вызов для поиска при каждом изменении термина.
Теперь в другом месте у меня есть отдельная функция (часть стороннего компонента). Когда эта функция вызывается, я хочу имитировать, как будто пользователь изменил термин, чтобы повторно вызвать вызов для поиска.
getPage(p: number) {
this.page.next(p);
this.term.setValue(this.term.value + " ");
}
Мне удалось заставить его работать, только заново установив значение термина с дополнительным пробелом (который, конечно, явно добавляет его в пользовательский интерфейс). Я пробовал некоторые другие опции в FormControl (setDirty, setTouched), но, кажется, ничего не вызывает изменения. Есть ли способ установить флаг без изменения значения?