我得到了“哑”列表组件,它使用另一个“哑”组件来呈现单个项目。当我想将数据传递给渲染器时,我必须在列表组件中具有相同的属性。例如,如果我想为项目设置“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变量的渲染器。
答案 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) {}
}
另见