Ионные События заменяют на Angular Observables - PullRequest
0 голосов
/ 07 октября 2019

Я понимаю, что ионные события будут устаревшими в следующей версии. В настоящее время я использую события для выполнения функций на моей родительской странице из подкомпонентов. Вот пример:

На моей главной странице он подписывается на событие для обновления:

constructor(){
  this.eventFormRefresh = (obj) => {
    this.fetch(obj.isReset);
  };
  this.events.subscribe('form:refresh', this.eventFormRefresh);
}

ngOnDestroy(): void {
  this.events.unsubscribe('form:refresh', this.eventFormRefresh);
}

В подкомпоненте я активирую обновление, публикуя событие 'form: refresh' следующим образом:

this.events.publish('form:refresh');

Как бы я сделал выше, используя угловые наблюдаемые?

Ответы [ 2 ]

2 голосов
/ 07 октября 2019

вы можете использовать rxjs Subject для этого, поэтому сначала создайте общую службу, например.

@Injectable()
export class EventService{
  private formRefreshAnnouncedSource = new Subject();
  formRefreshSource$ = this.formRefreshAnnouncedSource.asObservable();

  publishFormRefresh(){
    this.formRefreshAnnouncedSource.next()
  }

}

, затем опубликуйте как

this.eventService.publishFormRefresh();

и подпишитесь на некоторые компоненты

this.subscription = this.eventService.formRefreshSource$.subscribe(data => {
  //do something here
});

и отменить подписку на ngOnDestroy

this.subscription.unsubscribe()
0 голосов
/ 07 октября 2019

Вы можете создать сервис с BehaviorSubject, а также передавать данные и подписываться на них, где хотите. В вашем случае перейдите к потомку и подпишитесь на родительский компонент.

...