我有以下配置:
带2个链接的主导航:
<a href="#" [routerLink]="['/first']" first </a>
<a href="#" [routerLink]="['/second']"> second </a>
在第一个组件中,我有一个“详细信息”链接:
<div [routerLink]="['/detail', item.id]">
我的app.routing.ts:
{path: 'first', component: FirstComponent},
{path: 'second', component: SecondComponent},
{path: 'detail/:id', component: DetailComponent }
在导航到/ detail:item的第一个组件中,一切正常。 但是当我尝试从主导航中点击B链接时,我得到一个错误的URL。 所以基本上是:
1)转到第一个组件&gt;&gt;&gt;本地主机/第一
2)转到项目详情&gt;&gt;&gt;本地主机/细节/ someId
3)尝试转到第二个组件(localhost / Second)&gt;&gt;&gt;但它是localhost / detail / Second(并且每次点击项目细节都会在网址上附加另一个“/ detail”,所以我们得到/ detail / detail / Second等。)
我尝试了它而没有'/',但效果是一样的。 我发现如果我在路由中添加useHash:true,一切都按预期工作。
export const ROUTING: ModuleWithProviders = RouterModule.forRoot(ROUTES, {useHash:true});
但是我不想要哈希。
我的问题是 - 为什么这是使用哈希并且不是没有。另外,我如何解决附加问题。关于路由的任何一般解释将不胜感激。谢谢!
答案 0 :(得分:0)
import { APP_BASE_HREF } from '@angular/common';
问题是我使用{提供:APP_BASE_HREF,useValue:'。/'}(带点) 而不是{provide:APP_BASE_HREF,useValue:'/'}。删除点固定它。