提供者无法在构造函数的参数中解析其他提供者

时间:2018-08-20 14:55:43

标签: angular typescript ionic-framework ionic3 angular-providers

我正在开发离子v3应用程序: 我声明了我的所有提供程序,但是其中一个不能在其他两个提供程序中解决

我收到此错误:

branch D

这是我的“未解决”的提供商:

Uncaught Error: Can't resolve all parameters for DialogueMetier:([object Object], [object Object], [object Object], [object Object],?, [object Object], [object Object]).

这是无法解决的问题:

import { Injectable } from '@angular/core';

import { TechniqueMetier } from './technique';
import { GlobalVarsMetier } from './global-vars';
import { SynchronisationMappingMetier } from './synchronisation-mapping-metier';
import { InformationBdd } from '../bdd/information-bdd';
import { OutilMetier } from './outil-metier';
import { NotificationMetier } from './notification-metier';
import { InformationActionMetier } from './information-action-metier';
import { InformationAssocieeMetier } from './information-associee-metier';
import { InformationDestinataireMetier } from './information-destinataire-metier';
import { InformationDossierMetier } from './information-dossier-metier';
import { EvenementMetier } from './evenement-metier';
import { DialogueMetier } from './dialogue-metier';
import { TacheMetier } from './tache-metier';
import { DocumentMetier } from './document-metier';

@Injectable()
export class InformationMetier {

constructor(
    public techniqueMetier : TechniqueMetier,
    public rootScope : GlobalVarsMetier,
    public synchronisationMappingMetier : SynchronisationMappingMetier,
    public informationBdd : InformationBdd,
    public outilMetier : OutilMetier,
    public notificationMetier : NotificationMetier,
    public informationActionMetier : InformationActionMetier,
    public informationAssocieeMetier : InformationAssocieeMetier,
    public informationDestinataireMetier : InformationDestinataireMetier,
    public informationDossierMetier : InformationDossierMetier,
    public evenementMetier : EvenementMetier,
    public dialogueMetier : DialogueMetier,
    public tacheMetier : TacheMetier,
    public documentMetier : DocumentMetier 
    ) {
}

我试图了解问题所在。 我将所有提供程序都放在app.module.ts中的提供程序声明中。

有人知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

发生这种情况是由于循环依赖性。在您的情况下,InformationMetier取决于DialogueMetier,而DialogueMetier取决于InformationMetier。

  

当Angular的引导过程尝试设置所有服务时,   注入每个服务的依赖项,它检测何时出现这种情况   发生并排除错误,而不是陷入无限循环。

您需要重构服务中的任何一项,以便不需要引用另一项服务。