В Angular 8
я использую следующий подход для обновления страницы Details
после добавления новой записи:
EventProxyService
export class EventProxyService {
private eventTracker = new BehaviorSubject<any>(undefined);
/* Allows subscription to the behavior subject as an observable */
getEvent(): BehaviorSubject<any> {
return this.eventTracker;
}
/* Allows updating the current value of the behavior subject */
setEvent(param: any): void {
this.eventTracker.next(param);
}
}
Создатькомпонент:
export class CreateComponent implements OnInit {
constructor(private eventProxyService: EventProxyService) { }
triggerAnEvent(param: any): void {
this.eventProxyService.setEvent(param);
}
}
DetailsComponent:
export class DetailsComponent implements OnInit {
subscription;
constructor(private eventProxyService: EventProxyService) { }
ngOnInit() {
this.subscription = this.eventProxyService.getEvent().subscribe((param: any) => {
this.theTargetMethod(param);
);
}
theTargetMethod(param) {
this.record = param; //update record via new one passed from service
}
ngOnDestroy(): void {
this.subscription.unsubscribe();
}
}
Подход работает, как и ожидалось, но иногда происходят похожие события, например. Обновление, которое требует обновления страницы Details
. Итак, мне интересно, должен ли я создать новый объект BehaviorSubject
(eventTracker
), методы getEvent
и setEvent
для каждого из разных событий, например. Update
событие? Насколько я знаю, можно использовать один BehaviorSubject
, но может возникнуть проблема, если два разных события передают подписчикам несогласованные данные. Каков правильный подход?
type
иpayload
/data
, и управлять этим типом - person Damian Pioś   schedule 05.08.2019