如何发出路由器事件



>我有 2 个模块,一个是侧导航,我可以在其中选择菜单并希望在content module中显示组件,其中有router-outlet。我想知道最好的方法是什么?有一些router event我可以在内容模块中subscribe?因为我将使用serviceemit组件和subscribe event in router-outlet组件,但我想这不是最佳实践。像这样:

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

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

如果我没看错的话:

侧导航

@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>

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

希望对您有所帮助!

最新更新