我想将服务注入其他服务,但出于某种原因," @Inject"装饰者被忽略了。例如,以下服务依赖于另一项服务:
@Injectable()
class MyService {
final AnotherService _service;
MyService(@Inject(AnotherService) this._service);
// ... more methods
}
Angular2会抛出以下错误:
原始例外:没有AnotherService的提供商!
我使用" @ Inject"装饰者的方式很糟糕?
答案 0 :(得分:3)
缺少一些信息可以完全解决此问题,但例外情况表明注射器没有足够的信息来解决 AnotherService
角度中的DI建立在层次结构上,从根角度注入器开始,该注入器是在角度应用程序引导程序上创建的。
每个层次结构都是一个新的注入器实例,解析依赖关系是从下到上完成的,即:如果注入器无法解析,它将要求其父进程解析。这将持续到它没有父母(根注射器)到达注射器。
确保在为MyService声明提供程序之前为AnotherService声明了一个提供程序。
只需将提供程序添加到您提供给bootstrap的providers数组中的AnotherService。