在Spartacus中,当我们使用自定义事件时,希望页面重新加载以便数据更新。但是在某些情况下,重新加载的事件无法触发,我们无法得到更新的数据。下面提供一种基于Angular的解决方案。
首先,在我们的自定义事件中添加一个全局的Subject,用于通知页面重新加载:
import { Subject } from 'rxjs';
export class CustomEventService {
private reloadTrigger$: Subject<boolean> = new Subject<boolean>();
public triggerReload() {
this.reloadTrigger$.next(true);
}
public getReloadTrigger() {
return this.reloadTrigger$.asObservable();
}
}
随后,我们需要在页面组件中订阅这个Subject,并在收到通知后重新加载数据:
export class MyComponent implements OnInit, OnDestroy {
private reloadSubs = new Subscription();
constructor(private customEventService: CustomEventService) {}
ngOnInit() {
this.reloadSubs = this.customEventService.getReloadTrigger().subscribe(() => {
this.reload();
});
}
ngOnDestroy() {
this.reloadSubs.unsubscribe();
}
private reload() {
// 在这里重新加载数据
}
public triggerCustomEvent() {
this.customEventService.triggerReload();
}
}
在这个示例中,我们的自定义事件服务是一个单例,用于在全局范围内传递通知。页面组件在OnInit()生命周期方法中订阅了这个Subject,并在收到通知时重新加载数据。同时,我们还在页面组件的triggerCustomEvent()方法中触发了自定义事件。
这种做法可以确保我们在自定义事件中重新加载数据,并正确地更新页面。