我想從角度服務中檢索更新的對象值(借用者)。我在服務中創建了一個RxJS Subject
,以便多個組件可以訂閱它並獲取更新的值。帶有主題的角度服務Observable調用next()不被組件訂閱看到
當我通過組件中提供的服務訂閱主題時,我發現即使從BorrowerService調用.next()
也不會調用onNext()
函數參數。
如果我在BorrowerService類中訂閱了,我發現.next()
按預期工作。看起來,Subject是調用.next()
的Service類與組件之間的不同實例,因此不會獲得該訂閱。
這是不是在理解角服務或觀測?如何更新服務中的值,並在不知道何時調用.next()
的情況下被動獲取組件中的更改?
借款人,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 –