Как получить последнее излучаемое значение через поведение субъекта в другом компоненте? - PullRequest
0 голосов
/ 26 декабря 2018

С помощью поведенческого субъекта я могу получить последнее переданное значение в том же компоненте, но после перехода к другому компоненту я получаю значение по умолчанию (НЕ последнее выданное значение)

Я использовал BehaviorSubject для обновления значенияв одном компоненте и попытался получить обновленное значение в другом компоненте.

Первый компонент

bs = new BehaviorSubject<string>('default value');
currentMessage = this.bs.asObservable();
submit(){
   this.bs.next('updated value');
   this.bs.subscribe(message=> console.log(message));
   this.router.navigate(['../new-view']);
  }

другой компонент

ngOnInit() {
    this.firstComponent.currentMessage.subscribe(message=> 
console.log(message));
  }

в новом представлении / другой компонент, который я получаюзначение по умолчанию, однако я ожидал обновленного значения.

Мне нужен компонент, я получаю обновленное значение.

Не могли бы вы помочь!

1 Ответ

0 голосов
/ 26 декабря 2018

Вы должны использовать bs = new BehaviorSubject<string>('default value'); в службе и внедрить ее в необходимые компоненты для обмена данными.

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

Если вы используете для этого службу, все ваши компоненты могут получить обновленное значение.

...