Я объявил субъект в обслуживании и попытался получить sh ответ, полученный при выполнении вызова GET для внутреннего интерфейса с использованием "subject.next ()" .. также назначил наблюдаемое для субъекта с помощью "subject.asObservable () "и подписался на наблюдаемое в двух разных компонентах (родительский и маршрутизатор, дочерний объект). Проблема заключается в том, что наблюдаемое излучает новое значение только для одного подписчика, а не для двух подписчиков.
услуга
subject = new Subject<any>();
observable = this.subject.asObservable();
public getDetails(id) {
return this.http.get(this.url.concat(id))
.pipe(map(data => this.extractDetails(data),
catchError(err => this.handleError(err)));
}
public extractDetails(data){
this.subject.next(data);
return data;
}
Родительский компонент
ngOnInIt(){
this.hitUrl();
}
getDetails(){
this.service.observable.subscribe(
(data: any) => {
console.log(data);
},
err => {
console.error(err);
}
)
}
hitUrl(id: string) {
this.service.getDetails(id).subscribe(
(data: any) =>
if(!!data){
console.log(data);
this.getDetails();
}
},
err => {
console.log(err);
}
);
}
дочерний компонент маршрутизатора-розетки
ngOnInIt(){
this.hitUrl();
}
getDetails(){
this.service.observable.subscribe(
(data: any) => {
console.log(data);
},
err => {
console.error(err);
}
)
}
hitUrl(id: string) {
this.service.getDetails(id).subscribe(
(data: any) =>
if(!!data){
console.log(data);
this.getDetails();
}
},
err => {
console.log(err);
}
);
}
В компонентах hitUrl () также срабатывает при выполнении вызова к действию, затем Мне нужно, чтобы наблюдаемые должны выдавать последние данные обоим подписчикам (если призыв к действию выполняется от родительского или дочернего маршрутизатора).