擴充診斷

訊號必須在範本插值中被呼叫

這項診斷會偵測範本插值中未被呼叫的訊號。

import {Component, signal, Signal} from '@angular/core';

@Component({
  template: `<div>{{ mySignal }}</div>`,
})
class MyComponent {
  mySignal: Signal<number> = signal(0);
}

這樣寫有什麼問題?

Angular 訊號是不帶參數的函式(() => T)。執行時,它們會回傳訊號目前的值。 也就是說,在範本插值中使用訊號來呈現其值時,必須呼叫它。

我應該怎麼做?

在範本插值中使用訊號來呈現其值時,請確認有呼叫該訊號。

import {Component, signal, Signal} from '@angular/core';

@Component({
  template: `<div>{{ mySignal() }}</div>`,
})
class MyComponent {
  mySignal: Signal<number> = signal(0);
}

設定需求

任何擴充診斷要發出訊息,都必須啟用 strictTemplates。 interpolatedSignalNotInvoked 除了 strictTemplates 之外,沒有其他額外需求。

如果無法避免,該怎麼辦?

可以透過編輯專案的 tsconfig.json 檔案來停用這項診斷:

{
  "angularCompilerOptions": {
    "extendedDiagnostics": {
      "checks": {
        "interpolatedSignalNotInvoked": "suppress"
      }
    }
  }
}

詳情請見擴充診斷設定。