Как отфильтровать Observable массива с помощью rxjs 6 с помощью async - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть Observable, который возвращает в качестве наблюдаемого данные и который связывается с асинхронным использованием HTML.

здесь я назвал службу.

this.ProductOptions = this.ProductService.fetchProduct();

В HTML привязка имеет вид

Productoptions | async.

Работает нормально.

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

getCategory() {
  const productListOptions = this.productOptions.pipe(
    switchMap((itemList: BindingModel[]) => itemList.filter(product => product.name !== "Active")));

  console.log(this.productListOptions);
}

this.productOptions показываетниже в консоли.

enter image description here


Но когда я подписываюсь на наблюдаемое.

this.productService.fetchproducts().subscribe(response => console.log(response));

Я получаю формат ниже

[{id:1,name:"Active"},{id:1,name:"InActive"}]; i need to filter based on Active

1 Ответ

0 голосов
/ 18 сентября 2018

Вы используете switchMap, где вы должны использовать оператор карты.

Различия:

switchMap

Конвертировать Observable, который испускает Observables, вsingle Observable, которое испускает элементы, испускаемые самой последней из этих Observables

Другими словами, функция, определенная внутри switchMap, должна возвращать наблюдаемую.Ваш пример возвращает массив элементов, а не наблюдаемый

map

Преобразуйте элементы, испускаемые Observable, применяя функцию к каждому элементу.

...