我的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()中不运行,它里面的代码也不运行。请指导我如何解决这个问题。
当你重新加载时,所有的应用程序状态都会丢失。要么你必须从productComponent重新来,要么你需要将产品的id作为路由参数传递给viewProducts组件,然后从数据库中查询数据。这是标准的处理方式。