錯誤百科

訊號表單中的孤立欄位

這個錯誤表示某個 Field 執行個體已不再與目前的模型結構相連。當某個先前存在的欄位路徑無法再解析為父物件中的同一個屬性時,Angular 訊號表單就會拋出 NG01902。

常見的觸發原因是,不小心把某個欄位的值設成了 undefined。在訊號表單中,undefined 代表「欄位不存在」,因此既有的欄位可能會變成孤立狀態。

發生原因

訊號表單會讓欄位執行個體與你的模型形狀保持同步。如果模型形狀改變之後,程式碼仍參考著舊的欄位執行個體,Angular 就會偵測到不一致並拋出這個錯誤。

發生時機包括:

  • 某個屬性被從模型物件中移除
  • 某個屬性變成了 undefined,而不是保持存在
  • 程式碼在結構性更新之間一直持有過時的欄位參考

如何修復

  • 避免將 undefined 寫入模型欄位。當欄位應該繼續存在時,請改用 null 或其他明確的值。
  • 在欄位使用期間,讓模型形狀保持穩定。
  • 結構性更新之後,請從目前的表單樹重新讀取欄位,不要重複使用過時的參考。

模型設計方面的指引,請參閱避免使用 undefined。