Кросс-сервисная связь по Angular - PullRequest
1 голос
/ 23 апреля 2020

У меня есть две службы, которые зависят друг от друга, скажем, serviceA и serviceB. serviceA выполняет метод действия из вызова компонента и должен выдать значение в конце процесса. Это излучение прослушивается с serviceB, а затем оно должно обновить свои методы. Я сделал как этот ответ , но subject, похоже, не работает между службами.

@Injectable()
export class ServiceA {
  // Observable source
  private textSource = new Subject<string>();

  // Observable stream
  text$ = this.textSource.asObservable();

  methodCalledFromComp() {
    // does some work
    this.textSource.next('someValue');
  }
@Injectable()
export class ServiceB {
  constructor(private serviceA: ServiceA) {
    serviceA.text$.subscribe(el => {
      // not comes here, only when I call the same from a method
      console.log(el);
    });
  }

Я провел тест на прослушивание компонента из этого излучения, и оно сработало. Я делаю что-то неправильно? Есть ли альтернатива?

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Что может случиться с вами, так это то, что служба B никогда не инициализировалась в приложении, это случилось со мной.

Я создал демо здесь: stackblitz

1 голос
/ 23 апреля 2020

Попробуйте установить эти сервисы как синглтоны с @Injectable({ providedIn: 'root' })

Я только что создал демо здесь: stackblitz

...