У меня есть следующий сценарий: у меня есть дочерние компоненты, Компонент A и Компонент B, которые прослушивают один и тот же Предмет из внешней службы, например:
this.externalService.outcome.subscribe((event)=>{
event.preventDefault();
if(event.id === "SAVE"){
// Do something individudal...
this.externalService.save();
}
})
По сути, я перехватываю результат Предмет,сделайте что-то конкретное для текущего компонента, а затем вручную запустите действие сохранения.
Теперь наличие этого фрагмента кода в нескольких компонентах может привести к ошибкам и привести к ошибкам.Мне нужна эта подписка во всех моих компонентах, потому что каждый из них делает что-то индивидуальное.
Как я могу реорганизовать это так, чтобы родительский компонент / общий класс обслуживания управлял всеми подписками?Так, например, в дочерних компонентах я просто определяю метод, который должен быть сделан, а затем подписываюсь на externalService.outcome
в моем родительском компоненте / общем сервисе и в основном выполняю все зарегистрированные функции?
РЕДАКТИРОВАТЬ: Дело в том,Мне также нужен контекст текущего дочернего компонента.
РЕДАКТИРОВАТЬ 2: Чтобы подвести итог, это должно быть последовательность:
Внешняя служба (библиотека) вызывает result.next () -> MyРодительский компонент, который слушает результат Тема перехватывает:
this.externalService.outcome.subscribe((event)=>{
event.preventDefault();
if(event.id === "SAVE"){
//SOMEHOW ENSURE ALL CHILD COMPONENTS ARE TRIGGERED
}
//manually trigger save outcome
this.externalService.save();
});
-> Внутри подписки мне как-то нужно вызвать мои дочерние компоненты.Например, у каждого дочернего компонента есть метод «DomeSomethingBeforeSave ()».Но я не знаю своих дочерних компонентов, поэтому мне нужно определить какую-то функцию регистра, чтобы сообщить моему родительскому компоненту, какие функции следует вызывать.