Запуск функции перед подпиской - PullRequest
0 голосов
/ 03 ноября 2019

Я хотел бы добавить элемент управления формы, как только пользователь выбрал опцию.

Моя функция выбора:

selected(event: MatAutocompleteSelectedEvent): void {
      this.setTechnologies = new Set();
      this.setTechnologies.add(this.techInput.nativeElement.value);
}

Добавлениеновый контроллер

this.primaryFormGroup.addControl('tech', new FormControl('', []));
this.primaryFormGroup.valueChanges.subscribe(inputFields => {
  if (inputFields) {
    inputFields.tech = Array.from(this.setTechnologies);
  }
}

Моя проблема в том, что будет выполнена строка inputFields.tech = Array.from(this.setTechnologies);, за до может быть запущена функция selected(). Так что в этом случае значение inputFields.tech ВСЕГДА пусто.

Как мне сначала запустить функцию?

1 Ответ

2 голосов
/ 03 ноября 2019

Один из подходов - добавить небольшую задержку к valueChanges. Это гарантирует, что функция selected() будет запущена до valueChanges.

this.primaryFormGroup.valueChanges.pipe(
  delay(500)
).subscribe(inputFields => {
  if (inputFields) {
    inputFields.tech = Array.from(this.setTechnologies);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...