【问题标题】:Angular: in ngOnInit() My rxjs Fucntion dont run when I reload my componentAngular:在 ngOnInit() 中,当我重新加载组件时,我的 rxjs 函数不会运行
【发布时间】: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 组件”?你在刷新页面吗?

标签: angular rxjs ngoninit


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多