Как объединить наблюдаемый параметр запроса и форму, наблюдаемую с помощью Angular и RXJS - PullRequest
0 голосов
/ 04 октября 2018

У меня есть список сообщений с разбиением на страницы, на которые я подписываюсь на параметр запроса ?page= для отзыва API службы

ngOnInit(): void {

    this.route.queryParams.subscribe(params => {

        const page = params['page'];

        // on query parameter change, call the API service here


    });
}

Теперь у меня есть новое требование, согласно которому пользователь также может фильтровать список повыбрав раскрывающуюся категорию с помощью Реактивная форма .

Используя реактивную форму, я могу подписаться на наблюдателя, используя этот код здесь

onChanges(): void {
  this.myForm.get('category').valueChanges.subscribe(val => {
    // on form value change, call the API service here
  });
}

Мой вопрос: как я могу упростить это, используя Angular и RXJS?

Метод в приведенном выше примере на самом деле не СУХО, потому что он вызывает один и тот же API, только с другим параметром запроса

Спасибо.

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете использовать оператор combineLatest:

ngOnInit(): void {
  combineLatest(
    this.route.queryParams, 
    this.myForm.get('category').valueChanges
  ).subscribe(([{ page }, category]) => {
     // on any change call the API service here
  });
}

Примечание: не забудьте отписаться в хуке onDestroy или использовать оператор takeUntil

...