我有一個觀察的名爲「workcentersFiltered」式的Observable<Workcenter[]>
RxJs:到2個獨立的觀測
當我選擇一個廠,我可以成功過濾了我用下面的代碼工作中心 - 沒問題:
this.workcentersFiltered = this.newLineForm.get('plant').valueChanges
.flatMap(selectedPlant => {
return this.dataStore.Workcenters.map(workcenters => {
return workcenters.filter(x => x.PlantNumber === selectedPlant.PlantNumber);
});
});
的問題是,我想縮小這一陣列向下furtherly,當一個完全不同的,獨立的可觀察到的「'workcenter'.valuechanges
」發出一個字符串(它是一個輸入字段 - 我試圖執行自動完成)。
所以,問題是,我怎麼可以訂閱this.newLineForm.get('workcenter').valueChanges
,所以它發出的字符串值可以用來furtherly內workcentersFiltered
縮小數據「隱藏」(這已經是拴this.newLineForm.get('plant').valueChanges
。
難道我的困境有意義嗎?我必須重做,而不是作爲workcenteresFiltered
代替aBehaviorSubject,或者這裏什麼是正確的解決辦法嗎?
編輯在更多的解釋
當前工作中心篩選從dataStore.Workcenters獲取數據,當plant-forminput.valuechanges
發出更改時,因爲選擇了工廠。因此,我可以將所有工作中心縮小到只有與所選工廠匹配的工作中心。它適用於我上面的代碼。
但是我想介紹一下plant-forminput.valuechanges和workcentersFiltered之間的順序的新操作。我想根據workcenter-forminput.valuechanges的排放情況進一步縮小選項範圍。
因此,第一步在我的用戶界面上,用戶可以從下拉列表中選擇一個工廠,並將其他工廠的所有工作中心都過濾掉 - 這是有效的。
然後,第2步是讓用戶選擇一個特定的工作中心。這是一個文本輸入字段。我想要在這裏輸入每個字母(在workcenter-forminput.valuechanges上發出),以進一步縮小選項範圍(用於自動完成)。
我很難想象解決方案,因爲從步驟2(workcenter-forminput.valuechanges)中新引入的observable僅在發射時才相關。
很抱歉,但我不明白你的問題。你可以嘗試多解釋一下還是不一樣?和/或製作一個小的大理石圖表來展示你的期望? – Maxime
對不起,我不知道如何製作大理石圖。我編輯我的帖子,嘗試以不同的方式解釋它。 – Amivit
我意識到,將filteredWorkcenters作爲可觀察對象確實沒有意義。一旦我從數據存儲可觀察數據中檢索數據,我就會將filteredWorkcenters存儲爲普通數組 - 不可觀察。然後我可以更輕鬆地使用它。 – Amivit