Угловая передача на маршрутизатор-выход

#angular

#угловая

Вопрос:

У меня есть router-outlet в родительском компоненте, и я хочу излучать из дочернего компонента, но функция родительского компонента никогда не запускается?

Дочерний компонент

 @Output() setTitle: EventEmitter<string> = new EventEmitter<string>();

ngOnInit() {
    this.setTitle.emit('test'); 
}
  

В родительском html

 <div class="panel-body">
    <div (setTitle)='setTitle($event)'></div>
    <router-outlet (setTitle)='setTitle($event)'></router-outlet>
</div>
  

родительский ts-файл

 setTitle(title){
    console.log(title)
}
  

Даже простой div не работает
Пожалуйста, помогите

Комментарии:

1. Вы хотите испускать выход маршрутизатора в функции onClick?

2. У меня есть маршрутизатор-розетка в родительском. Данные не поступают от дочернего элемента

3. @user2837961 сработало ли мое решение для вас?

4. @Vikas Да, это так. Я не могу отблагодарить вас достаточно

5. Добро пожаловать, приятель 🙂 рад помочь

Ответ №1:

Вы не можете использовать пользовательское событие в директиве маршрутизатора-розетки.
Директива маршрутизатора-выхода содержит два события.
activate — Когда компонент загружен в маршрутизатор
deactivate — Когда компонент выгружается из маршрутизатора
Документы

Для вашего сценария вы могли бы использовать activate событие при загрузке дочернего компонента, будет запущен OnActivate, и вы получите ссылку на компонент

 <div class="panel-body">
    <div (setTitle)='setTitle($event)'></div>
    <router-outlet (activate)='onActivate($event)'></router-outlet>
</div>
  

Через ссылку на компонент вы можете наблюдать источник события

 onActivate(componentReference) {
   //Below will subscribe to the searchItem emitter
   componentReference.setTitle.subscribe((data) => {
      this.setTitle(data);
   })
}