提问者:小点点

Angular: in ngOnInit()当我重新加载组件时,我的rxjs Fucntion不会运行


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

1 MessengerService。我使用的这个服务是使用RxJs向其他组件发送/获取数据。服务的代码在这里。

从“@角/核”导入{可注入};从“rxjs”导入{Replay主题,主题};

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

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

 }

2 ProductComponent。它有一个带有函数的按钮,它的片段在这里。

 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我的最后一个组件视图产品组件在这里,我使用ngOnInit()中的MessengerService从ProductCompoent获取数据:void{}片段如下。

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

现在到了我的问题。当我从ProductComponent函数路由到viewProduct时。它发送数据,然后在ngOnInit()中GetMessageWellData()完美工作。但是当我重新加载viewComponent函数时,这个。_MessengerService。GetMessageWellData()。订阅();在ngOnInit()中不运行,它里面的代码也不运行。请指导我如何解决这个问题。


共1个答案

匿名用户

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