Как получить последнее излучаемое значение через поведение субъекта в другом компоненте?

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

Я использовал 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 ответ

Решение

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

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

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

Другие вопросы по тегам