Поставщики не могут разрешить другого поставщика в параметре конструктора

Я разрабатываю приложение ionic v3: я объявил всех своих провайдеров, но один из них не может быть разрешен в двух других провайдерах

Я получил эту ошибку:

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 
    ) {
}

и это тот, который не может решить это:

import { Injectable } from '@angular/core';
import { InformationMetier } from './information-metier';
import { InformationAssocieeMetier } from './information-associee-metier';
import { InformationDestinataireMetier } from './information-destinataire-metier';
import { SynchronisationMappingMetier } from './synchronisation-mapping-metier';
import { DossierMetier } from './dossier-metier';
import { DialogueMessageMetier } from './dialogue-message-metier';
import { DialogueBdd } from '../bdd/dialogue-bdd';


@Injectable()
export class DialogueMetier {

    constructor(
        public synchronisationMappingMetier : SynchronisationMappingMetier,
        public informationAssocieeMetier : InformationAssocieeMetier,
        public informationDestinataireMetier : InformationDestinataireMetier,
        public dossierMetier : DossierMetier,
        public informationMetier : InformationMetier,
        public dialogueMessageMetier : DialogueMessageMetier,
        public dialogueBdd : DialogueBdd) {
    }

Я пытаюсь понять, что не так. Я помещаю всех провайдеров в декларацию провайдера в app.module.ts.

Кто-то знает, что я сделал не так?

1 ответ

Решение

Это происходит из-за циклической зависимости. В вашем случае InformationMetier зависит от DialogueMetier, который зависит от InformationMetier.

Когда процесс начальной загрузки Angular пытается настроить все сервисы и внедрить зависимости каждого сервиса, он обнаруживает, когда происходит такой сценарий, и выдает ошибки, вместо того, чтобы застрять в бесконечном цикле.

Вам необходимо провести рефакторинг любой из ваших услуг, чтобы она не требовала ссылки на другую службу.

Другие вопросы по тегам