Ho uno scenario reale in un progetto reale in cui ho bisogno di 2 servizi per accedere alle proprietà e/o ai metodi l'uno dell'altro. Non sono un esperto angolare, quindi è possibile?E 'possibile iniettare un servizio all'interno di un altro servizio e viceversa allo stesso tempo?
Ho provato e fallisce. Ecco il mio tentativo:
app.component.ts
import { Component } from '@angular/core';
import { FirstService } from './first.service';
import { SecondService } from './second.service';
@Component({
selector: 'my-app',
template: '<h1>Hello world!</h1>',
providers: [FirstService, SecondService]
})
export class AppComponent {
constructor(public firstService: FirstService, public secondService: SecondService) {
console.log(firstService.foo);
console.log(secondService.bar);
}
}
first.service.ts
import { Injectable } from '@angular/core';
import { SecondService } from './second.service';
@Injectable()
export class FirstService {
foo: string = 'abc';
constructor(public secondService: SecondService) {
this.foo = this.foo + this.secondService.bar;
}
}
second.service.ts
import { Injectable } from '@angular/core';
import { FirstService } from './first.service';
@Injectable()
export class SecondService {
bar: string = 'xyz';
constructor(public firstService: FirstService) {
this.bar = this.bar + this.firstService.foo;
}
}
Plunker: http://plnkr.co/edit/PQ7Uw1WHpvzPRf6yyLFd?p=preview
Giusto iniettare il secondo servizio nel primo servizio funziona bene ma non appena iniettare il primo servizio nel secondo servizio fallisce e genera errori nella console.
Quindi cosa c'è che non va?
una soluzione di lavoro dovrebbe stampare il seguente al log della console:
abcxyz
xyzabc
Grazie in anticipo!
"dipendenze circolari" esistono in angular2? –
Non sai cosa intendi. Le "dipendenze circolari" funzionano con le classi ma DI non possono creare istanze di classi con dipendenze circolari. –