Angular FormControl value屬性的一些事

  背景:一個輸入校驗,允許輸入多行,每一行是ip或網段。寫了個校驗,將其按行拆分後單獨校驗。

1. FormControl無法深複製

  使用JSON.parse(JSON.stringify(control))進行簡單深複製報錯,因爲不是json類型;使用deepClone進行遞歸深複製,直接棧溢出。考慮到代碼的健壯性,已經有單獨校驗的方法,所以不想再寫個新的,也不想再把正則寫一遍以至於需要維護兩份正則。於是就定義了一個新的變量等於control,然後將新的變量的value賦值爲拆分後的值進行校驗。那麼就造成了淺複製的問題 -- control的value也跟着變了,於是想在結尾再把value還原回去,結果賦值的時候就出現只讀無法修改的問題。也就是下邊的問題。

2. value是隻讀屬性,無法直接修改

  接1,無法直接修改value,但是可以直接把新變量的value修改後,直接賦值給control,是可以的;另外,如果定義新變量時,不直接使用control賦值,而是new 一個 FormControl並將值置爲拆分後的值,理論上也是可以的。此外還有一些比如將屬性臨時修改爲可以讀寫,使用proxy之類的,理論上也可行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章