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 组件并从数据库中查询数据。这是标准的处理方式。
我的 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 组件并从数据库中查询数据。这是标准的处理方式。