【发布时间】:2021-06-27 01:54:14
【问题描述】:
我的 Angular 应用程序具有以下组件。
1 Messenger 服务。我使用此服务使用 RxJs 向其他组件发送/获取数据。 服务代码在这里。
从 '@angular/core' 导入 { Injectable }; 从 '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 产品组件。它有一个带有功能的按钮,它的sn-p在这里。
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 My Last Component viewProduct Component 在这里,我使用 ngOnInit() 中的 MessengerService 从 ProductCompoent 获取数据:void {} sn-p 如下。
ngOnInit(): void {
this._MessengerService.GetMessageWithData().subscribe();
// some code here
}
现在来回答我的问题。当我从 ProductComponent 函数路由到 viewProduct 时。它发送数据,然后在 ngOnInit() 中 GetMessageWithData() 完美工作。但是当我重新加载 viewComponent 函数 this._MessengerService.GetMessageWithData().subscribe();在 ngOnInit() 中不运行并且其中的代码不运行。请指导我如何解决此问题。
【问题讨论】:
-
你能创建一个沙盒吗?
-
我不知道沙盒兄弟
-
兄弟有这个问题的sn-p或解决方案吗?
-
stackblitz.com 在此处重现问题
-
如何“重新加载 productView 组件”?你在刷新页面吗?