Angular 的DI - @Inject() 和 @Injectable

优质
小牛编辑
143浏览
2023-12-01

@Inject()

是一个手动机制,让Angular 2知道必须注入参数。 它可以这样使用:

在上面示例中,我们要求chatWidget是单例的,Angular通过调用@Inject(ChatWidget)与类符号关联。 需要特别注意的是,我们使用ChatWidget的类型和作为其单例的引用。 我们没有使用ChatWidget来实例化任何东西,Angular在幕后帮我们做好了。

@Injectable()

让Angular 2知道一个类可以用于依赖注入器。 如果类上有其他Angular 2装饰器或没有任何依赖,@Injectable()不是必须的。

这里有一个用标记的 示例:

在上面的例子中,Angular 2的注入器通过使用类型信息来确定要注入到ChatWidget的构造函数中。 这是可能的,因为这些特定的依赖关系是类型化的,并且不是原始类型。 在某些情况下,Angular 2的DI需要更多的信息,而不仅仅是类型。