Как общаться между родителем и ребенком без использования привязки свойств в Angular? - PullRequest
0 голосов
/ 23 апреля 2020

существует ли способ получить доступ к данным в реальном времени между компонентами без использования привязки свойств:

причина, по которой я не могу их использовать, заключается в том, что мой дочерний компонент представляет собой диалоговое окно и я использую роутер в app.component. html

1 Ответ

1 голос
/ 23 апреля 2020

Есть 3 способа, которыми я могу придумать ..

  1. , используя сервис с Rx JS наблюдаемыми
  2. , передавая данные с использованием экземпляра компонента диалога
  3. использование маршрутизатора state {состояние: {...})

позвольте мне привести краткий пример для варианта 1.

компонент A отправляет данные

this.sharedService.data(data);

shared-service.ts

private data$ = new Subject<Data>();
dataListener$: Observable<Data> = this.data$.asObservable();
data(data: Data) {
    this.data$.next(data);
}

компонент B подписывается на Наблюдаемый

private readonly onDestoy = new Subject<void>();    

ngOnInit(): void {
    this.sharedService.data$.pipe(
        takeUntil(this.onDestroy) // very important to unsubscribe
        tap((data: Data) => console.log(data)) // here is your data
    ).susbscribe()
}


ngOnDestroy() {
    this.onDestroy.next();
    this.onDestroy.complete();
}

Я надеюсь, что это поможет вам ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...