【问题标题】:Angular router - use [routerLink] to navigate on componentAngular 路由器 - 使用 [routerLink] 在组件上导航
【发布时间】:2020-04-21 11:48:35
【问题描述】:

如何从localhost:4200/home 路由到localhost:4200/home#app=1111?

我尝试了类似的方法:

home.component.html

 <a class="app-card" [routerLink]="['/HOME']" [queryParams]="{'app':'1111'}">

然后什么都没有发生。而queryParams 使用? 而不是# 进行路由。

home.module.ts

RouterModule.forChild([
  {
    path: '',
    component: HomeComponent,
  }
]),

有人有想法吗?

谢谢!

【问题讨论】:

  • 你也可以发布路线吗?

标签: angular routes uri angular8


【解决方案1】:

您可以将可选参数作为进一步的对象传递给routerLink:

<a class="app-card" [routerLink]="['/HOME', {'app':'1111'}]">

在这种情况下,输出为:/HOME;app=1111


更新

要拥有可选的 queryParams,您可以添加以下路由:

{ path: 'home', component: HomeComponent }
{ path: 'home/:app', component: HomeDetailComponent }

所以你会有以下匹配:

/home            matches => path: 'home'
/home/1111       matches => path: 'home/:app'

更新 2

// app-routing.module.ts

RouterModule.forRoot([
  {
    path: 'home',
    loadChildren:() => import('....').then(m => m.HomeModule),
  }
])

如果使用子路由,则需要在路径中再添加一个参数:

// home-routing.module.ts

RouterModule.forChild([
  {
    path: ':app',
    component: HomeComponent,
  }
])

在你的模板中:

<a class="app-card" [routerLink]="['/HOME']" [queryParams]="{'app':'1111'}">

【讨论】:

  • 不起作用。我得到了输出localhost:4200/home;app=1111,但是当我点击时,什么也没有发生。
  • 那么问题可能出在路线上。如果您可以添加它们,那将很有帮助。
  • 是的,它必须是#,因为它将打开应用程序组件,其中应用程序的 ID 为 1111
  • 通常你有一个类似的 URL:“/home?app=1111”而不是“/home#app=1111”。 QueryParams 在您的子/详细信息组件中很容易阅读,并根据传递的 ID 显示特定的详细信息视图。
  • 谢谢,但您的更新 2 没有帮助。结果仍然有这个localhost:4200/home;app=1111...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多