将服务注入其他服务

时间:2016-07-10 19:25:51

标签: dependency-injection angular dart

我想将服务注入其他服务,但出于某种原因," @Inject"装饰者被忽略了。例如,以下服务依赖于另一项服务:

@Injectable()
class MyService {
    final AnotherService _service;
    MyService(@Inject(AnotherService) this._service);
// ... more methods
}

Angular2会抛出以下错误:

  

原始例外:没有AnotherService的提供商!

我使用" @ Inject"装饰者的方式很糟糕?

1 个答案:

答案 0 :(得分:3)

缺少一些信息可以完全解决此问题,但例外情况表明注射器没有足够的信息来解决 AnotherService

角度中的DI建立在层次结构上,从根角度注入器开始,该注入器是在角度应用程序引导程序上创建的。

每个层次结构都是一个新的注入器实例,解析依赖关系是从下到上完成的,即:如果注入器无法解析,它将要求其父进程解析。这将持续到它没有父母(根注射器)到达注射器。

确保在为MyService声明提供程序之前为AnotherService声明了一个提供程序。

只需将提供程序添加到您提供给bootstrap的providers数组中的AnotherService。