在Angular 2中列出项目渲染器

时间:2016-08-25 06:35:28

标签: templates angular

我得到了“哑”列表组件,它使用另一个“哑”组件来呈现单个项目。当我想将数据传递给渲染器时,我必须在列表组件中具有相同的属性。例如,如果我想为项目设置“showTimestamp”布尔属性,我必须这样做:

list.template.html

<my-item-renderer *ngFor="let item of items" [showTimestamp]="showTimestamp"></my-item-renderer>

有没有办法做一些事情来替换组件模板的一部分?

我想做这样的事情:

<my-list [items]="items"><ng-content><item-renderer [showTimestamp]="true"></item-renderer></ng-content></my-list>

所以我的列表只获取items属性,在ng-content中获取一个已经设置了showTimestamp变量的渲染器。

1 个答案:

答案 0 :(得分:2)

您可以使用模板:

<my-list [items]="items">
  <template><item-renderer [showTimestamp]="true"></item-renderer></template></my-list>
@Component({
  selector: 'my-list',
  template: `
      <template ngFor [ngForOf]="items" [ngForTemplate]="templateRef"></template>`
})
class MyList {
  @Input() data;
  constructor(private templateRef:TemplateRef) {}
}

另见