删除离子3应用程序中提供程序的循环依赖

时间:2017-10-24 10:46:56

标签: angular cordova ionic3

我在离子3应用程序中包含另一家提供商的提供商。但它给了我错误'找不到供应商'。我做了一些研究,发现它是由于循环依赖。如何克服离子3 app中的循环依赖?

2 个答案:

答案 0 :(得分:7)

Angular不允许在另一个提供程序中引用提供程序,因为它可能导致循环依赖注入。我解决它的方法是从构造函数中删除类变量的声明,并使用来自angular core的 Injector ,使用以下代码在超时中注入依赖:

因此,假设您要在提供商B中包含提供商A,

import { ProviderA } from '../provider-a/provider-a';

export class ProviderB {
  provider_a:any;
  constructor(public injector: Injector) {
    console.log('Hello ProviderB Provider');
    setTimeout(() => this.provider_a = injector.get(ProviderA));
  }
}

答案 1 :(得分:1)

您可以引用提供商中的其他提供商,只是其他提供商不能包含对您引用它的提供商的引用。该特定循环引用意味着您包含对ALSO引用第一个提供者的提供者的引用。