Birbirinin özelliklerine ve/veya yöntemlerine erişmek için 2 hizmete ihtiyacım olan gerçek bir projede gerçek bir senaryo var. Ben Açısal bir uzman değilim, bu mümkün mü?Başka bir servisin içinde bir servis enjekte etmek mümkün mü?
Denedim ve başarısız.
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
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: İşte benim girişimi var http://plnkr.co/edit/PQ7Uw1WHpvzPRf6yyLFd?p=preview
Sadece İkinci hizmetin ilk hizmete enjekte edilmesi iyi çalışıyor ancak ilk hizmeti ikinci servise enjekte ettiğimde başarısız oluyor ve konsola hata atar.
Yani ne oluyor?
bir konsol günlüğüne aşağıdaki yazdırmalısınız çözümü çalışma: önceden
abcxyz
xyzabc
Teşekkür!
angular2'de 'dairesel bağımlılıklar' var mı? –
Ne demek istediğinden emin değilim. "döngüsel bağımlılıklar", sınıflarla çalışır ancak DI, döngüsel bağımlılıkları olan sınıfları başlatamaz. –