Даже несмотря на то, что вы сказали, что не хотели бы пользоваться услугой, это, вероятно, ваш лучший вариант.
Вы можете воспользоваться этим решением.
Используя @ViewChild
, вы можете следовать этому руководству. , с компонентом внука в компоненте дедушки и бабушки.
В противном случае вы можете создать «мост» от внука к родителю, а затем от родителя к прародителю, используя декоратор @Output
.
Дочерний компонент предоставляет свойство EventEmitter, с помощью которого он генерирует события, когда что-то происходит. Родитель привязывается к этому свойству события и реагирует на эти события. Свойство EventEmitter дочернего элемента является выходным свойством, обычно украшенным декорацией @Output.
источник
Пример:
Дедушка:
<parent (notifyGrandparent)="GrandparentHandle($event)">
</parent>
///ts
GrandparentHandle(event){
// do needed work
}
Родитель:
<child (handleNotif)="childEvent($event)">
</child>
@Output() notifyGrandparent= new EventEmitter();
childEvent(event) {
this.notifyGrandparent.emit('event')
}
Ребенок:
@Output() handleNotif = new EventEmitter
onNotify() {
this.handleNotif.emit('notify everyone')
}
источник
Вы можете следовать этому руководству по взаимодействию компонентов с этот полный пример stackblitz.
Кроме того, вы можете прочитать эту ветку о взаимодействии компонентов
и этот пример с использованием @viewChildren
, что более интересно ...
person
BatshevaRich
schedule
28.07.2020
ViewChild
как в parent, так и в grand parent , а затем из grand parent вызовитеthis.parentRef.grandChildRef.method...
- person David   schedule 03.08.2020