空如何構建一個可觀察的選擇,如果沒有選中的項與選定= true或空返回無論是當前的項目?獲取給定項目</p> <pre><code>items = [ {id: 1, selected: false}, {id: 2, selected: false} ] </code></pre> <p>的列表中選擇當前所選項目或項目列表
首先嚐試:初始加載並且在選擇項目
items
.flatMap(item => item)
.filter(item => item.selected)
.startWith(null)
工作正常。但只要所有項目都再次取消選中,它將不會發出null - 這是合理的,因爲filter()運算符不會通過。我在這裏缺少的是能夠將'null'設置爲在這種情況下將會發射的後備默認值。
用默認值「空」 第二次嘗試,首先使用():
items
.flatMap(item => item)
.first(item => item.selected, null)
這也適用於初始加載不錯,但它不會對任何後續的更改事件中執行。據我的理解,這是因爲first()完成初始運行後的流。
決賽(工作)嘗試:
items
.map((items) => {
selectedItems = items.filter(item => item.selected);
return selectedItems.length ? selectedItems : [null]
})
.flatMap(item => item)
這做什麼,我需要的,但我不知道是否有另一種方式來表達只用rxjs運營商這個邏輯是什麼?
感謝您的示例馬克。我明白瞭如何使用'scan'來實現這一點。 –