Angular:在 ngOnInit() 中,当我重新加载我的组件时,我的 rxjs 函数不会 运行

Angular: in ngOnInit() My rxjs Fucntion dont run when I reload my component

我的 Angular 应用程序具有以下组件。

1 个信使服务。我正在使用此服务 send/get 数据到其他使用 RxJs 的组件。 服务代码在这里

从“@angular/core”导入{可注射}; 从 'rxjs';

导入 {ReplaySubject, Subject}
 @Injectable({
   providedIn: 'root'
 })
 export class MessengerService {
   _Subject = new ReplaySubject(1);
   constructor() { }

   SendMessageWithData(MessageAndData){
     this._Subject.next(MessageAndData);
   }
   GetMessageWithData(){
     return this._Subject.asObservable();
   }

 }

2 个产品组件。它有一个带功能的按钮,它的片段在这里。

 SendProductId(_ProductId){
     this._MessengerService.SendMessageWithData({ //Sending data to the Messenger Service
       id:_ProductId,
       Component:'ProductComponent'
     });
     this._Router.navigate(['viewProduct']); //Then routing to the viewProduct Component
   }

3 我的最后一个组件 viewProduct 组件 在这里,我在 ngOnInit() 中使用我的 MessengerService 从 ProductCompoent 获取数据:void {} 代码片段如下。

 ngOnInit(): void {
     this._MessengerService.GetMessageWithData().subscribe();
                 // some code here
 }

现在来回答我的问题。当我从 ProductComponent 函数路由到 viewProduct 时。它发送数据,然后在 ngOnInit() 中 GetMessageWithData() 完美工作。但是当我重新加载 viewComponent 函数 this._MessengerService.GetMessageWithData().subscribe();在 ngOnInit() 中不要 运行 并且其中的代码不要 运行。请指导我如何解决这个问题。

重新加载时,所有应用状态都将丢失。要么你必须从 productComponent 重新来,要么你需要将产品的 id 作为路由参数传递给 viewProduct 组件并从数据库中查询数据。这是标准的处理方式。