-1

我有 2 个模块,一个是 sidenav,我可以在其中选择菜单并希望在content modulewhere have中显示组件router-outlet。我想知道最好的方法是什么?有一些router event我可以subscribe在内容模块中使用的地方吗?因为我将使用service组件emitsubscribe event in router-outlet组件,但我想这不是最佳实践。像这样的东西:

Service:
private emit = EventEmitter<string>
emit(component: string): void {
 this.emit.emit(component)
}

在组件中,我只是订阅service emit并用于router.navigaterouter-outlet. 希望有人可以帮助我=)。谢谢

4

2 回答 2

0

如果我理解正确:

西德纳夫

@Output() navigate: EventEmitter<string[]> = new EventEmitter();

emit (route: string[]) {
  this.navigate.emit(route);
}

sidenav 的父级

<app-sidenav (navigate)="router.navigate($event)"></app-sidenav>

请记住在父组件中公开路由器:

constructor(public router: Router) {}
于 2018-07-06T13:18:09.760 回答
0

子组件 HTML

<app-child
[formGroup]="formChild"
(navigate)="onNavigate($event)"
></app-child>

TS

@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']);
  }

希望对您有所帮助!

于 2022-02-28T10:57:05.087 回答