У меня есть реальный сценарий в реальном проекте, где мне нужны 2 службы для доступа к свойствам и/или методам друг друга. Я не эксперт по углам, так это возможно?Возможно ли внедрить услугу внутри другой службы и наоборот?
Я пробовал, и он терпит неудачу. Вот моя попытка:
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
Просто ввод второй службы в первую услугу работает нормально, но как только я ввожу первую услугу во вторую службу, она терпит неудачу и выдает ошибки на консоль.
Итак, что не так?
Рабочий раствор должен напечатать следующее в лог консоли:
abcxyz
xyzabc
Заранее спасибо!
есть 'круговые зависимости' существуют в угловом2? –
Не уверен, что вы имеете в виду. «Круговые зависимости» работают с классами, но DI не может создавать экземпляры классов с круговыми зависимостями. –