我正在将一个项目从 ionic 3.2 迁移到 5.14,但我在使用可观察量而不是事件时遇到了问题。
在原始代码中,用户登录后,我通过事件更改了侧边菜单的名称和图像:
app.component.ts
this.events.publish('user:login', this.nomePrimeiro, Date.now());
this.events.publish('image:login', this.imagem, Date.now());
在app.component.ts上,我写了这个:
events.subscribe('user:login', (user, time) => {
Global.nomePrimeiro = user;
});
events.subscribe('image:login', (image, time) => {
Global.imagem = image;
});
如何为可观察量更改此设置? 我需要服务吗?
创建事件服务。 在 EventService.ts 中:
export class EventService {
private dataObserved = new BehaviorSubject<any>('');
currentEvent = this.dataObserved.asObservable();
constructo(){}
publish(param):void {
this.dataObserved.next(param);
}
}
要从示例页面 1 发布事件:
constructor(public eventService:EventService){}
updatePost(){
this.eventService.publish('post:updated');
// or
this.eventService.publish({name: 'postupdate', value: 'value you need to pass'});
}
在第 2 页:
constructor(public eventService:EventService){
this.eventService.currentEvent.subscribe(data=>{
// here you can get the data or do whatever you want or data.name or data.value
});
}