角度サービスから更新されたオブジェクト値(借り手)を取得します。私はサービスにRxJS Subject
を作成して、複数のコンポーネントがそれに加入して更新された値を取得できるようにしました。件名付き角度サービスObservableの呼び出しnext()はコンポーネントの購読で表示されません
コンポーネントで提供されているサービスを通じてサブジェクトにサブスクライブすると、.next()
がBorrowerServiceから呼び出されても、onNext()
関数の引数が呼び出されないことがわかりました。
BorrowerServiceクラス内で購読した場合、私は.next()
が期待通りに機能することがわかります。サブジェクトは.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 –