錯誤百科

子查詢結果為必要,但沒有可用的值

在查詢結果計算出來之前,或查詢沒有相符項目時,就存取了必要子查詢(contentChild.required 或 viewChild.required)的結果。

這可能發生在兩種不同的情況:

  • 在某個查詢來得及收集結果之前,就存取了查詢結果;
  • 查詢已執行,但沒有比對到任何節點,因此沒有結果。

內容查詢與檢視查詢各自在不同的時間點計算結果:

  • contentChild 結果在宿主檢視(使用宣告查詢之指令的範本)建立後可用;
  • viewChild 結果在宣告查詢之元件的範本建立後可用。

在查詢結果可用之前存取它們,就會導致本頁所述的錯誤。最值得注意的是,查詢結果在宣告查詢的元件或指令的建構函式中_永遠_不可用。

修正方式

contentChild 查詢結果可以在 AfterContentChecked 生命週期勾點或之後存取。 viewChild 查詢結果可以在 AfterViewChecked 生命週期勾點或之後存取。

請確保必要查詢至少比對到一個節點,而且確實有結果。你可以在上面列出的生命週期勾點中存取查詢結果來驗證這一點。