我正在尝试构建一个自定义数据网格,可以显示数据作为卡或更传统的表/列表/网格.如果我不希望模板可以自定义,我可以很容易地完成它,如此plunker中所示
在这里,我有一个my-grid组件可以传递要呈现的数据.然后我循环数据并根据所需的视图渲染card-view或list-view组件,该视图由view toggle(app/my-grid.ts文件中的代码)控制
我想提供传递自定义模板的能力,我想这样的事情:
<my-grid>
<card-view-template>
<template var-item>
<h4>{{item.name}}</h4>
{{item.home}}
</template>
</card-view-template>
<list-view-template>
<template var-item>
<span>{{item.name}}</span>
{{item.home}}
</template>
</card-view-template>
</my-grid>
Run Code Online (Sandbox Code Playgroud)
我怎样才能从我所处的位置找到我想要的东西?
我能够解决我的问题,如下所示
import {Component, Directive, ContentChild, TemplateRef} from 'angular2/core';
@Directive({
selector: 'card-view'
})
export class CardViewComponent {
@ContentChild(TemplateRef) itemTmpl;
ngAfterContentInit() {
console.log('In CCV', this.itemTmpl)
}
}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助其他面临类似问题的人。或者也许有人可以指出我更好的解决方案
更新:对于较新版本的 ng2(在撰写本文时为 RC),forwardRef()在某些情况下您需要使用如下所示:
@ContentChild(forwardRef(() => CardViewComponent)) cardViewComponent;
@ContentChild(forwardRef(() => ListViewComponent)) listViewComponent;
| 归档时间: |
|
| 查看次数: |
4649 次 |
| 最近记录: |