サブジェクト クラスに同時に登録されている 2 つのコンポーネント (親と子) と 1 つのサービスがあります。しかし、サブジェクト クラスがnext
メソッドを使用してデータを発行すると、1 つのコンポーネント (子) だけがデータを取得します。
navbar.component.ts :(送信者):
this.messageService.setClientUserAuth(this.respObject.details.actionDtls);
message.service.ts: (サブスクライバー)
constructor(private route: Router, private _rest: RestApiService) {
this.getClientUserAuth().subscribe(auth => {
console.log('AUTH :' + JSON.stringify(auth));
});
}
setClientUserAuth(id: any) {
this.clientUserAuth.next(id);
}
getClientUserAuth(): Observable<any> {
this.clientUserAuth = new Subject<any>();
return this.clientUserAuth.asObservable();
}
base-template.component.ts : (サブスクライバー) (子)
ngOnInit() {
this.messageService.getClientUserAuth().subscribe(auth => {
console.log('------------>' + JSON.stringify(auth));
});
}
action.component.ts (サブスクライバー)(親)
constructor(private _rest: RestApiService, private messageService: MessageService,
private route: Router, private modalService: NgbModal, notifier: NotifierService) {
this.messageService.getClientUserAuth().subscribe(auth => {
console.log('----::----->' + JSON.stringify(auth));
});
}
データがnavbarコンポーネントから来る場合、ベーステンプレートsubscription
関数のみがデータを取得しますが、subscription
ベーステンプレートからメソッドを削除するとsubscription
、アクションコンポーネントからのメソッドがデータを取得します. しかし、すべてのコンポーネントとサービスが同時にレンダリングされるときに、すべてのコンポーネントとサービス内のデータが必要です。それを達成する方法。