Я пытаюсь получить конкретную Пункт, например, { key: "321" }
из ngrx/store
на основе параметров маршрута. Я получил это работает так:Свести наблюдаемом
this.route.params
.map((params: any) => params.key)
.mergeMap((key: string) => {
return this.store.select(state => state.items)
.mergeMap((items: Observable<any[]>) => items)
// .do(item => console.log(item, key))
.filter((item: any) => item.key === key);
})
.take(1)
.subscribe(console.log);
где state.items
представляет собой массив объектов, как: [ {key: "1"}, {key: "2"}, ...]
, который заполняет в течение долгого времени.
Мне интересно, есть ли лучший способ для этого?
Кроме того, почему я получаю один и тот же элемент несколько (state.items.length
) раз до .take(1)
?
Вы хотите, чтобы принести несколько элементов из массива элемента в вашем магазине? Если это так, ваш код можно оптимизировать. – KwintenP
@KwintenP Мне нужно получить элемент из списка по значению определенного свойства. Значение url '/ items/123' равно ** 123 **, а свойство - ** **, например. – Sasxa