Как получить последнее излучаемое значение через поведение субъекта в другом компоненте?
С помощью поведенческого субъекта я могу получить последнее испущенное значение в том же компоненте, но после перехода к другому компоненту я получаю значение по умолчанию (НЕ последнее испущенное значение)
Я использовал 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
инициализируется, все его подписчики получают первое значение.
Если вы используете сервис для этого, все ваши компоненты могут получить обновленное значение.