我今天做 Angular 開發的時候, 在 App.module.js 文件裏編寫代碼:
export class AppModule {
constructor(private cart:Cart){
console.log('Jerry: ', this.cart);
}
}
遇到下列錯誤:
No suitable injection token for parameter 'cart' of class 'AppModule'. Consider using the @Inject decorator to specify an injection token.(-992003)
這個錯誤消息的意思是,在 AppModule 類中的構造函數中使用了一個名爲 cart 的參數,但是 Angular 沒有找到一個合適的注入令牌(Injection Token)來爲該參數提供一個值。因此,編譯器建議使用 @Inject 裝飾器來顯式地指定注入令牌。
在 Angular 中,注入令牌是用來標識一個特定的依賴項的,它通常是一個字符串或一個符號(Symbol)。Angular 會根據注入令牌來查找對應的依賴項,並將其注入到組件或服務中。如果沒有爲參數提供注入令牌,則 Angular 將無法確定應該注入哪個依賴項,從而導致錯誤。
解決這個錯誤的方法是,使用 @Inject 裝飾器爲 cart 參數顯式地指定一個注入令牌。例如,如果 cart 參數依賴於一個名爲 CartService 的服務,則可以將其注入令牌指定爲 CartService:
import { Inject } from '@angular/core';
import { CartService } from './cart.service';
export class AppModule {
constructor(@Inject(CartService) private cart:CartService){
console.log('Jerry: ', this.cart);
}
}
在上面的代碼中,使用了 @Inject 裝飾器將注入令牌指定爲 CartService。這樣 Angular 就會根據注入令牌來查找 CartService 服務,並將其注入到 cart 參數中。
這個數字 -992003 是錯誤消息的錯誤碼,它是由 Angular 編譯器生成的。每個錯誤碼都對應着一個特定的錯誤,這樣有助於開發人員快速定位和解決問題。
在這個特定的錯誤消息中,錯誤碼 -992003 表示“找不到適合的注入令牌”,即缺少依賴項的注入令牌。當編譯器發現這種情況時,會生成這個錯誤消息,並提示開發人員使用 @Inject 裝飾器來顯式地指定注入令牌。
需要注意的是,錯誤碼並不是唯一的標識錯誤的方式,因爲它們可能會因爲不同版本的編譯器和工具而有所變化。因此,當遇到錯誤時,建議不僅僅依賴於錯誤碼,而是要仔細閱讀錯誤消息,理解錯誤的具體含義,並根據提示來解決問題。