0

サブジェクト クラスに同時に登録されている 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、アクションコンポーネントからのメソッドがデータを取得します. しかし、すべてのコンポーネントとサービスが同時にレンダリングされるときに、すべてのコンポーネントとサービス内のデータが必要です。それを達成する方法。

4

1 に答える 1