Angular Service から更新されたオブジェクト値 (借り手) を取得したいと考えています。Subject
複数のコンポーネントがそれにサブスクライブして更新された値を取得できるように、Service にRxJS を作成しました。
コンポーネントで提供されたサービスを介してサブジェクトにサブスクライブすると、onNext()
関数の引数が.next()
BorrowerService から呼び出されても呼び出されないことがわかりました。
BorrowerService クラス内でサブスクライブした場合.next()
、期待どおりに機能することがわかりました。Subject は、呼び出す Service クラスと.next()
コンポーネントの間で別のインスタンスであるため、そのサブスクリプションを取得していないようです。
これは Angular Services または Observables の理解に失敗していますか? サービスの値を更新し、いつ呼び出すかを知らずにコンポーネントの変更を受動的に取得するにはどうすればよい.next()
ですか?
借り手レポート.component.ts
@Component({
...
providers: [BorrowerService]
})
export class BorrowerReport {
private borrower: Borrower;
constructor(private borrowerService: BorrowerService) {
this.borrowerService.borrowerChanged.subscribe(borrower => {this.borrower = borrower});
}
}
借り手.サービス.ts
@Injectable()
export class BorrowerService {
public borrowerChanged: Subject<Borrower> = new Subject<Borrower>();
//event handler
selectBorrower(borrower: Borrower) {
this.borrowerChanged.next(borrower);
}
}