我有一个要在其中显示表行的表,它是一个组件。我也想将数据传递给该组件:
<table> <th> <td>col 1</td> <td>col 2</td> <td>col 3</td> </th> <tr> <my-component [data1]="data1" [data2]="data2"></my-component> </tr> <tr *ngFor="let item of list"> {{item}} </tr> </table>
在中my-component,HTML包含一些<td></td>从data1和渲染的数据data2。
my-component
<td></td>
data1
data2
但是渲染后,由于<my-component></my-component>我的CSS损坏,导致所有my- componentHTML(整个表格行)都显示在第一列中。
<my-component></my-component>
my- component
以上结果:
<table> <th> <td>col 1</td> <td>col 2</td> <td>col 3</td> </th> <tr> <my-component> <td>data1.prop1</td> <td>data1.prop2</td> </my-component> </tr> <tr *ngFor="let item of list"> {{item}} </tr> </table>
我尝试了以下方法:
@Component({ selector: '[my-component]', templateUrl: 'my-component.html' }) <tr my-component [data1]="data1" [data2]="data2"></tr>
但这会导致错误Can't bind to 'data1' since it isn't a known property of 'tr'。
Can't bind to 'data1' since it isn't a known property of 'tr'
我也不能使用,@Directive因为我想呈现HTML。
@Directive
如何呈现<my-component></my-component>不带<my-component></my-component>标签的模板?
其他答案是角度的早期版本。我正在使用Angular 4.3.4。
任何帮助,将不胜感激..!
您还需要在下面的选择器中加入tr,
@Component({ selector: 'tr[my-component]', template: ` <td>{{data1.prop1}}</td> <td>{{data1.prop2}}</td> <td>{{data2.prop1}}</td> ` }) export class MyComponent { @Input() data1; @Input() data2; }
希望这可以帮助!!