我正在尝试制作大约10个空白行,因此它将与其旁边的<div>
对称。
现在我有:
<tbody>
<tr *ngFor="let officeInfo of officeInformation">
<td>{{officeInfo.supervisorOffice}}</td>
<td>{{officeInfo.office}}</td>
<td>{{officeInfo.command}}</td>
</tr>
</tbody>
我试过了
<tbody>
<tr *ngFor="let officeInfo of officeInformation + 10">
<td>{{officeInfo.supervisorOffice}}</td>
<td>{{officeInfo.office}}</td>
<td>{{officeInfo.command}}</td>
</tr>
</tbody>
这不起作用。找不到任何关于如何实现它的文档。
------------------------------更新1 --------------- -------------
我注意到我应该使用@Pipe
我这样做:
从“@ angular / core”导入{Pipe,PipeTransform};
@Pipe({ name: 'emptyArray' })
export class EmptyArrayPipe implements PipeTransform {
transform(value, size: number) {
return new Array(size).fill(0);
}
}
然后在我的循环中添加它:
<tr *ngFor="let officeInfo of officeInformation | emptyArray:10">
<td>{{officeInfo.supervisorOffice}}</td>
<td>{{officeInfo.office}}</td>
<td>{{officeInfo.command}}</td>
</tr>
但是现在只打印出一张空表。
答案 0 :(得分:2)
<tbody>
<tr *ngFor="let officeInfo of officeInformation + 10">
<td>{{officeInfo.supervisorOffice}}</td>
<td>{{officeInfo.office}}</td>
<td>{{officeInfo.command}}</td>
</tr>
<tr *ngFor="let dummy of empty">
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
class MyComponent {
empty = new Array(10).fill(null);
}
<强>更新强>
这样就会填充行,这样即使officeInformation
包含较少的项目,也总会有10行:
@Pipe({name: 'fillRows'})
export class FillRowsPipe{
transform(value, size: number) {
if(!value || !size) {
size = 10;
}
var missing = size - (value ? value.length : 0);
if(missing < 0) {
return null;
}
return new Array(missing).fill(null);
}
}
<tbody>
<tr *ngFor="let officeInfo of officeInformation + 10">
<td>{{officeInfo.supervisorOffice}}</td>
<td>{{officeInfo.office}}</td>
<td>{{officeInfo.command}}</td>
</tr>
<tr *ngFor="let dummy of officeInformation|fillRows:10">
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
答案 1 :(得分:1)
您必须向officeInformation
数组添加一些空对象。我建议使用添加新空行的getter:
class MyController {
retrieveOfficeInformation() {
this.officeInformation = // data for the office
// before adding more empty rows, check if the last row has any data
if (this.officeInformation[this.officeInformation.length - 1].id) {
this.officeInformation = this.officeInformation.concat([
// empty objects go here
{},
{}
]);
}
}
}