Угловая 5 реактивная форма valueChanges не работает - PullRequest
0 голосов
/ 17 января 2019

У меня есть форма внутри службы:

    this.settingsForm = this.formBuilder.group({
        names: this.formBuilder.array([]),
        globalIDs: this.formBuilder.array([]),
        topics: this.formBuilder.array([]),
        emails: this.formBuilder.array([]),
        description: ''
    });

и получатель для удобства -

get description(): FormControl{
    return this.settingsForm.get('description') as FormControl;
}

в какой-то директиве я ввожу службу и у меня есть вход, который прикреплен кэтот контроль.html-

<textarea matInput
          [formControl]="settingsDataService.description">
</textarea>

В директиве у меня есть прослушиватель:

 ngOnInit() {
        this.listenToSearchInput();
    }

listenToSearchInput() {
    this.settingsDataService.description.valueChanges.pipe(
        distinctUntilChanged(),takeUntil(this.descriptionDestroy))
        .subscribe(value => {
          //DO SOMETHING
        });
}

, но когда я набираю текстовую область, мой абонент не вызывается.

Может быть, это желательно, но после вызова listenToSearchInput () в сервисе после получения ответа от сервера я заполняю описание: -

this.settingsForm.patchValue({description:description});

В чем может быть причина

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Я нашел ответ - в функции, которая получает данные с сервера, я создаю новую форму seetingsForm для очистки предыдущих данных ..

0 голосов
/ 17 января 2019

вероятно, вам нужно вызвать функцию в onChanges ловушке жизненного цикла вашей директивы.

onChanges(): void {
   this.settingsDataService.description.valueChanges.pipe(
        distinctUntilChanged(),takeUntil(this.descriptionDestroy))
        .subscribe(value => {
          //DO SOMETHING
        });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...