我这里有2个组件:app.component.html和app-server.component.html
app.component.html
<table class="table" style="width:200px;">
<tr>
<td>Names</td>
<td>Age</td>
</tr>
<tr><app-server-element *ngFor="let student of students" [student]='student'></app-server-element></tr>
</table>
服务器element.component.html:
<td class="column">{{student.name}}</td>
<td class="column">{{student.age}}</td>
但结果是这样的原因?:
答案 0 :(得分:1)
除了其他人提出的问题之外 - 似乎还有另一个问题。您的<app-server-element *ngFor="let student of students" [student]='student'></app-server-element>
充当了一个单元格,因为它是您tr
的直接孩子。 td
内的app-server-element
元素无效。您可以在指令中使用replace来摆脱包装器 - td
元素将成为tr
元素的直接子元素,并且它将按预期工作。
修改强>
在收集有关您的问题的更多信息后,请对您的代码进行以下更改:
将server-element.component.ts
更改为:
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: '[appServerElement]',
templateUrl: './server-element.component.html',
styleUrls: ['./server-element.component.css']
})
export class ServerElementComponent implements OnInit {
@Input()
appServerElement: { name: string, age: string };
constructor() {
//
}
ngOnInit() {
//
}
}
并将selector: 'app-server-element'
更改为selector: '[appServerElement]'
。
将app.component.html
更改为以下内容:
<table class="table" style="width:200px;">
<tr>
<td>Names</td>
<td>Age</td>
</tr>
<tr [appServerElement]="student" *ngFor="let student of students"></tr>
</table>
答案 1 :(得分:0)
正如ankit建议你需要迭代<tr>
:
<table class="table" style="width:200px;">
<tr>
<td>Names</td>
<td>Age</td>
</tr>
<tr *ngFor="let student of students"><app-server-element *ngFor="let student of students" [student]='student'></app-server-element></tr>
您的代码重复app-server-element
,结果为:
<tr>
<app-server-element></app-server-element>
<app-server-element></app-server-element>
<app-server-element></app-server-element>
<app-server-element></app-server-element>
</tr>
当你想要的时候:<tr><app-server-element></app-server-element></tr>
<tr><app-server-element></app-server-element></tr>
<tr><app-server-element></app-server-element></tr>