Я пытаюсь преобразовать существующее приложение в Angular.Я очень новичок в Angular и действительно борюсь со многими вещами, которые, как я ожидаю, будет абсолютно простым.Последний пытается зафиксировать изменения модели в неродственном компоненте.
Моя структура: Приложение> (Служба макета / данных)> (Компонент A / Компонент B)
Компонент A подписан наслужба данных, модель которой представляет значения группы пользовательских дочерних компонентов.Эти дочерние компоненты изменяют ввод и возвращают числовое значение в компонент A, который, в свою очередь, обновляет модель в службе данных.Нет проблем здесь, это работает как описано.
Компонент B также подписан на ту же службу данных и отображает результат на основе дальнейших расчетов значений моделей.Проблема заключается в том, что при изменении входного значения дочерних компонентов компонента A значения компонента B обновляются, но я не могу вызвать функцию UpdataCalculations (), когда они есть.Чтобы решить эту проблему, я добавил ngDoCheck () и поместил туда свою функцию, но мне это кажется действительно грубым.Что я действительно хотел бы сделать, это добавить слушатель onChange к модели на уровне компонента B.
Итак, я предполагаю, что мой вопрос А: Возможно ли это даже с Angular?и B: Есть ли лучший способ сделать это?
Служба:
export class JobDataService {
private jobData = new BehaviorSubject(new Job_Info_View_Model);
currentJob$ = this.jobData.asObservable();
constructor() {}
}
Компонент B:
constructor(
private jobData: JobDataService,
) {}
ngOnInit() {
this.jobData.currentJob$.subscribe( (observing: Job_Info_View_Model) => { this.currentJob = observing; } );
}
ngDoCheck() {
this.UpdataCalculations();
}
Спасибо за любую помощь
РЕДАКТИРОВАТЬ: на самом деле не имеет смысла для компонентов A и B, чтобы быть одним компонентом, поэтому я хотел бы избежать этого, если я могу.