我有一个带动态路线的导航栏,我也想使用1个模板。因此,如果我向http://domain/com/aaa发出请求,我将从数组中获取数据。
我如何实现这一目标?
navbar.component.html :
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li *ngFor="let item of items"><a [routerLink]="[item.slug]" [routerLinkActive]="['is-active']">{{item.name}}</a></li>
</ul>
</div><!-- /.navbar-collapse -->
navbar.componetns.ts :
items = [
{ id:"1" , slug: "aaa" , name: "AAA"},
{ id:"2" , slug: "bbb" , name: "BBB"},
{ id:"3" , slug: "ccc" , name: "CCC"},
{ id:"4" , slug: "ddd" , name: "DDD"}
];
app.routing.ts :
const APP_ROUTES: Routes = [
{path: '' , component: HomeComponent}
];
export const routing = RouterModule.forRoot(APP_ROUTES);
item.service :
export class ItemService {
getItems() {
return [
{ id:"1" , slug: "aaa" , name: "AAA"},
{ id:"2" , slug: "bbb" , name: "BBB"},
{ id:"3" , slug: "ccc" , name: "CCC"},
{ id:"4" , slug: "ddd" , name: "DDD"}
];
}
constructor() { }
}
答案 0 :(得分:0)
您不能在根组件中设置params,因为root不是角度组件。请参阅此评论https://github.com/angular/angular/issues/1858#issuecomment-151326461
这不起作用的原因是你的index.html在其中 你放置的不是一个角 零件。因此,Angular不会编译这个元素。和 Angular不会在运行时读取属性值,仅在期间读取 编译时间,否则我们会受到性能影响。
因此,您需要一个级别的通用组件,并将slug作为参数添加到路由器中。
const APP_ROUTES: Routes = [
{path: '' , component: HomeComponent},
{path: '/common:slug' , component: CommonComponent}
];