我今天做 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 装饰器来显式地指定注入令牌。
需要注意的是,错误码并不是唯一的标识错误的方式,因为它们可能会因为不同版本的编译器和工具而有所变化。因此,当遇到错误时,建议不仅仅依赖于错误码,而是要仔细阅读错误消息,理解错误的具体含义,并根据提示来解决问题。