- Angular版本:2.1.0
- 路由版本:3.1.0
我正在学习Angular 2中的路由,但是当我点击链接时,自定义片段没有附加到URL上,组件也没有加载。
手动在地址栏中输入片段确实有效,并且组件会在<router-outlet></router-outlet>
中加载,但我希望它按预期工作 - 即通过单击routerLink
指令内的链接来实现。
我已经遵循了路由文档,但仍然无法得到良好的结果。
这里有一个非常相似的问题,但我发现还没有解决方案适用于我。
我遇到的两个常见解决方案是:
- 拼写错误的“routerLink”,大小写敏感
- 在
index.html
顶部没有<base href='/'>
此外,在Chrome的控制台窗口中没有错误。
因此,在继续之前,我只想排除明显的解决方案。
这是我配置自定义路由的方法:
1. 配置自定义路由(routes.ts)
import { Routes, RouterModule } from '@angular/router';
import { RecipesComponent } from './recipes/recipes.component';
import { ShoppingListComponent } from './shopping-list/shopping-list.component';
//TODO Fix routing bug (not switching on click or displaying in URL)
export const APP_ROUTES: Routes = [
{path: '', redirectTo: 'recipes', pathMatch: 'full'},
{path: 'recipes', component: RecipesComponent},
{path: 'shopping-list', component: ShoppingListComponent}
];
/*Set routing up for root of app*/
export const routing = RouterModule.forRoot(APP_ROUTES);
2.导入全局路由(app.module.ts)
import { routing } from './routes';//Custom routes file
@NgModule({
// Declarations removed for bravity
imports: [
BrowserModule,
FormsModule,
HttpModule,
routing
],
providers: [ShoppingListService],
bootstrap: [AppComponent,]
})
export class AppModule { }
3. 提供 RouterOutlet 指令 (app.component.html)
<rb-header></rb-header>
<div class="container">
<router-outlet></router-outlet>
</div>
4. 使用静态片段实现 routerLink(header.component.html)
<ul class="nav navbar-nav">
<li><a routerLink="/recipes">Recipes</a></li>
<li><a routerLink="/shopping-list">Shopping List</a></li>
</ul>
路由文档指出,使用
routerLink
是用于静态片段,而[routerLink]
是用于传递参数的。我尝试了这两种方法,但结果仍然相同。请注意保留HTML标记,不做解释。
@NgModule
中呢? - ekorouterLink="recipes"
- micronyks