Je souhaite récupérer une valeur d'objet mise à jour (emprunteur) à partir d'un service Angular. J'ai créé un RxJS Subject
dans le Service afin que plusieurs composants puissent s'y abonner et obtenir la valeur mise à jour.Service angulaire avec objet Appel visible next() non vu par les abonnements aux composants
Quand je souscris au sujet à travers le service fourni dans le composant, je trouve que l'argument de la fonction onNext()
est jamais appelé même quand .next()
est appelé à partir BorrowerService.
Si je me suis abonné à la classe BorrowerService, je trouve que .next()
fonctionne comme prévu. Il semble que le sujet est une instance différente entre la classe Service qui appelle .next()
et le composant, et n'obtient donc pas cet abonnement.
Est-ce un défaut de compréhension des Services Angulaires ou Observables? Comment est-ce que je peux mettre à jour la valeur dans le service et obtenir passivement les changements dans le composant sans savoir quand appeler .next()
?
emprunteur-report.component.ts
@Component({
...
providers: [BorrowerService]
})
export class BorrowerReport {
private borrower: Borrower;
constructor(private borrowerService: BorrowerService) {
this.borrowerService.borrowerChanged.subscribe(borrower => {this.borrower = borrower});
}
}
borrower.service.ts
@Injectable()
export class BorrowerService {
public borrowerChanged: Subject<Borrower> = new Subject<Borrower>();
//event handler
selectBorrower(borrower: Borrower) {
this.borrowerChanged.next(borrower);
}
}
https://stackoverflow.com/q/42567674/5394220 dup –