Angular 2动态模板

时间:2016-10-18 06:09:19

标签: angular

我有一个带动态路线的导航栏,我也想使用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() { }
}

1 个答案:

答案 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}
];