我在開發一個測試工具,使用者可以手動從一個下拉菜單裡,選擇目前浏覽器的 user agent 字段。
其中 My Browser 是目前浏覽器真實的值,其他4個都是代碼裡寫死的 fake user agent,如下圖所示:
這個下拉菜單的實作:
注意這裡的設計,下拉菜單有顯示給終端使用者檢視的字元串和 value,其中 My Browser 對應的值為“”,而其餘 fake browser 每個 entry 的 value,綁定到 fakeBrowsers 數組的每個元素。
那麼在 Component 代碼裡,如何擷取目前使用者選中的條目對應的值呢?
利用上圖給 select 控件綁定的 formControl.
切換下拉菜單後,首先觸發 fakeBrowserSelection$ 注冊的訂閱函數:
根源是我們執行個體化的 FormControl value 發生了變化,在 setValue 方法裡觸發我們的 Observable:
然後是 valueChanges 這個 Observable 發出的值,觸發的訂閱函數: