Почему метод фильтра RXJS не работает для меня - PullRequest
0 голосов
/ 17 апреля 2019

Проблемы с использованием операторов RXJS так, как они были предназначены для использования.

Моя конечная точка возвращает Observable<Array<TaskReprintReasonCode>>

Затем я использую асинхронный канал для подписки на эту наблюдаемую.

this.reason$ = this.taskService.getTaskReprintReasonCodes();

Это прекрасно работает, пока мне не нужно отфильтровать или отобразить что-то из этого списка причин.

this.reasons$ = this.taskService.getTaskReprintReasonCodes().pipe(filter(r => r.reasonDescription === 'New'))

Error Produced from my IDE

Ядумаю, это связано с тем, как я определяю тип, возвращаемый из БД.Это плохая практика, чтобы называть Observabe<INSERTTYPE[]>

1 Ответ

0 голосов
/ 17 апреля 2019
Observable<Array<TaskReprintReasonCode>>

Определяет коллекцию TaskReprintReasonCode объектов.

Вы можете использовать оператор map() для изменения значения элемента в потоке.Если вы хотите уменьшить массив только до тех, которые имеют свойство "new", то вы должны использовать filter() из прототипа массива.

    this.taskService.getTaskReprintReasonCodes().pipe(
        map((arr:TaskReprintReasonCode[]) => {
             return arr.filter(r => r.reasonDescription === 'New');
        )
    )

Array.filter ()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Rxjs.map ()

https://www.learnrxjs.io/operators/transformation/map.html

...