У меня есть Угловой компонент, как это:RxJS, угловой: Не удается получить результат подписки в других методах
Это создает нормальный ReplaySubject. (см. constructor
). Тогда некоторые другие компоненты получают subject
по способу getSubject()
и подписывают на него. Другой компонент устанавливает новое значение через setValue
. Это значение должно быть получено Абонентами. Однако этого не происходит. Он ничего не получает, даже ошибки нет.
@Injectable()
export class BreadcrumbService {
subject: ReplaySubject<string>;
constructor() {
this.subject = new ReplaySubject<string>();
console.log('Step 1: Subject created');
}
getSubject(): ReplaySubject<string> {
console.log('Step 2: Return subject for subscribing');
return this.subject;
}
setValue(title: string) {
console.log('Step 3: Invoke a new value which should be received in the Subscriber of step 2.');
this.subject.next(title);
}
}
Если я размещаю подписку внутри setValue()
, она работает должным образом.
Вот мой компонент, который должен получить подписку:
export class BreadcrumbComponent implements OnInit {
constructor(
private breadcrumbsService: BreadcrumbService
) {}
ngOnInit() {
this.breadcrumbsService.getSubject()
.subscribe(
success => {
console.log(success); // is never called
},
error => {
console.log(error); // is never called
}
);
}
}
Как мой абонент получит это значение?
Вы проверили, что сказал @Gunter? кроме всего, что должно работать без ошибок. – micronyks