Как отправить событие маршрутизатора
У меня есть 2 модуля, один из которых sidenav, где я могу выбрать меню и хочу показать компонент в content module
где есть router-outlet
, Я хочу знать, каков наилучший способ сделать это? Есть немного router event
где я могу просто subscribe
в модуле контента? Потому что я буду использовать service
в emit
компонент и subscribe event in router-outlet
компонент, но я думаю, что это не лучшая практика. Что-то вроде того:
Service:
private emit = EventEmitter<string>
emit(component: string): void {
this.emit.emit(component)
}
и в компоненте я просто подписаться на service emit
и использовать router.navigate
показать компонент в router-outlet
, Надеюсь, кто-нибудь может мне помочь =). Спасибо
2 ответа
Если я вас правильно понял:
Sidenav
@Output() navigate: EventEmitter<string[]> = new EventEmitter();
emit (route: string[]) {
this.navigate.emit(route);
}
Родитель Сиденав
<app-sidenav (navigate)="router.navigate($event)"></app-sidenav>
Не забудьте сделать маршрутизатор общедоступным в родительском компоненте:
constructor(public router: Router) {}
дочерний компонент HTML
<app-child
[formGroup]="formChild"
(navigate)="onNavigate($event)"
></app-child>
ТС
@Output() navigate: EventEmitter<string[]> = new EventEmitter();
route = ['yourUrl'];
onNavigate(route: string[]) {
this.route = route;
this.navigate.emit(route);
//console.log(route);
}
Родительский компонент
goBack(){
this.router.navigate(['yourRoute']);
}
Надеюсь быть полезным!