我在离子3应用程序中包含另一家提供商的提供商。但它给了我错误'找不到供应商'。我做了一些研究,发现它是由于循环依赖。如何克服离子3 app中的循环依赖?
答案 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引用第一个提供者的提供者的引用。