天天看點

Angular 下拉菜單實作的一個例子

我在開發一個測試工具,使用者可以手動從一個下拉菜單裡,選擇目前浏覽器的 user agent 字段。

Angular 下拉菜單實作的一個例子

其中 My Browser 是目前浏覽器真實的值,其他4個都是代碼裡寫死的 fake user agent,如下圖所示:

Angular 下拉菜單實作的一個例子

這個下拉菜單的實作:

Angular 下拉菜單實作的一個例子
Angular 下拉菜單實作的一個例子

注意這裡的設計,下拉菜單有顯示給終端使用者檢視的字元串和 value,其中 My Browser 對應的值為“”,而其餘 fake browser 每個 entry 的 value,綁定到 fakeBrowsers 數組的每個元素。

那麼在 Component 代碼裡,如何擷取目前使用者選中的條目對應的值呢?

利用上圖給 select 控件綁定的 formControl.

Angular 下拉菜單實作的一個例子
Angular 下拉菜單實作的一個例子

切換下拉菜單後,首先觸發 fakeBrowserSelection$ 注冊的訂閱函數:

Angular 下拉菜單實作的一個例子

根源是我們執行個體化的 FormControl value 發生了變化,在 setValue 方法裡觸發我們的 Observable:

Angular 下拉菜單實作的一個例子

然後是 valueChanges 這個 Observable 發出的值,觸發的訂閱函數:

Angular 下拉菜單實作的一個例子

繼續閱讀