Как отправить событие маршрутизатора

У меня есть 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']);
  }

Надеюсь быть полезным!

Другие вопросы по тегам