Как передать данные между двумя родственными компонентами? - PullRequest
0 голосов
/ 06 марта 2019
<container>
  <navbar>
    <summary></summary>
    <child-summary><child-summary>
  </navbar>
  <content></content>
</container>

Итак, у меня есть выборка, которая отправляет значение и.

Метод OnSelect хорошо запускается с (изменением) внутри компонента.

Итак, я попытался с директивами @Input, @Output и @EventEmitter, но я не вижу, как извлечь событие как @Input компонента, если только он не идет по шаблону parent / child. Все примеры, которые я основал, имеют отношение между компонентами.

РЕДАКТИРОВАТЬ: пример с BehaviorSubject не работает (все подключенные службы к API работают хорошо, запускается только наблюдаемый при запуске, но не при изменении значения select)

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Начните с создания объекта поведения в сервисе

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataService {

  private messageSource = new BehaviorSubject("default message");
  currentMessage = this.messageSource.asObservable();

  constructor() { }

  changeMessage(message: string) {
    this.messageSource.next(message)
  }

}
1 голос
/ 06 марта 2019

Я создаю образец для отправки сообщения между компонентами, используя BehaviorSubject

@Injectable()
export class MyService {

private messageSource = new BehaviorSubject<string>('service');
currentMessage = this.messageSource.asObservable();


  constructor() {
  }

  changeMessage(message: string) {
    this.messageSource.next(message)
  }
}

Вы можете сослаться на https://stackblitz.com/edit/behavior-subject-2019

...