У меня очень простой сценарий с полем ввода и множеством разделов, которые выполняют вызовы API на основе того, что введено в это поле ввода.
Теперь само поле ввода находится в другом компоненте, так чтоЯ сделал, это создать в службе поведенческий объект, имел значение по умолчанию, а затем каждый раз, когда пользователь изменяет поле ввода, я просто вызываю другой метод в службе, который внутренне вызывает следующий для объекта поведения.
Затем в моем другомРазделы пользовательского интерфейса Я подписываюсь на это поведениеSubject и хочу в любое время проверять измененное значение при выполнении вызовов API.Обратите внимание, что конечные точки API различны для каждого раздела, но их нужно запускать одновременно.
Однако я не могу заставить это работать.Вот что у меня есть
Код в моей службе changeService.ts:
valueChangedSubject: BehaviorSubject<any>: new BehaviorSubject({});
constructor() {}
valueHasChanged(updatedValue: any) {
this.valueChangedSubject.next(updatedValue);
}
Код в одном компоненте, который вызывает событие:
valueChanged(changedVal: string) {
this.changeService.valueHasChanged({val: changedval});
}
Код вкомпонент, который подписывается на поведение Subject:
this.changeService.valueChangedSubject.subscribe((val:any) => {
console.log('OK I am here ', val);
});
Проблема заключается в том, что 'Ok I are here' печатается впервые при обновлении, но там, через какое-то время я вызываю метод valueChanged (), он невызвать наблюдаемое.
Я знаю, что мне здесь не хватает чего-то связанного с «горячей наблюдаемой».Но что и как это сделать?Я пытался использовать share () или publish (), но не смог заставить его работать так, как ожидал.