Как мне отфильтровать наблюдаемую, используя значения из другой наблюдаемой, как внутреннее соединение в SQL?
class Item {
constructor(public name: string public category: string) {
}
}
class NavItem {
constructor(public key: string public isSelected: boolean = false) {
}
}
// Build a list of items
let items = of(new Item('Test', 'Cat1'), new Item('Test2', 'Cat2'))
.pipe(toArray());
// Determine the unique categories present in all the items
let navItems = from(items)
.pipe(mergeAll(),
distinct((i:item) => i.category),
map(i=>new NavItem(i.category)),
toArray());
Я строю многогранный поиск, поэтому предположим, что в пользовательском интерфейсе выбран NavItem "Cat1", поэтому я хочу создать наблюдаемый из всех элементов, которые имеют эту категорию. После фильтрации до выбранного NavItem я не уверен, как ввести элементы, отфильтровать их и выплюнуть только те элементы, которые относятся к выбранной категории. Вот что у меня есть:
let filteredItems = navItems.pipe(
mergeAll(),
filter(n => n.isSelected))
// join to items?
// emit only items that match a selected category?
Ожидаемый результат будет
[{name: 'Test', category: 'Cat1'}]