【问题标题】:How call router navigate method instead of routerLink?如何调用路由器导航方法而不是routerLink?
【发布时间】:2020-09-24 16:51:40
【问题描述】:

我正在尝试用路由器的导航方法替换 routerLink。不幸的是,它不起作用,我无法再解释它。 routerLink 可以正常工作。

我想替换这个:

<mat-list-item role="listitem" [routerLink]="['details', 2]" routerLinkActive="active">

有了这个:

<mat-list-item role="listitem" routerLinkActive="active" (click)="openDetails(2)">

这就是我使用导航方法的方式:

openDetails(id) {
  this.router.navigate(['details', id]);
}

我的路由器配置如下:

const routes: Routes = [
  {
    path: '',
    component: MasterComponent,
    children: [
      {
        path: 'details/:id',
        component: DetailsComponent
      }
    ]
  }
];

我做错了什么?

【问题讨论】:

    标签: angular angular-material angular-cli angular-routing angular-router


    【解决方案1】:

    您需要将导航附加对象传递给导航方法,并将 relativeTo 字段设置为当前路由,如下所示:

    constructor(private route:ActivatedRoute,private router:Router) { }
    
    this.router.navigate(['details', id], {relativeTo:this.route});
    

    【讨论】:

    • 好的,现在可以了。但是我现在如何将路线设置为活动?我可以使用什么来代替模板中的 routerLinkActive 指令?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多