#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);
})
}