HTML中仅显示第一个元素

时间:2018-09-09 17:28:51

标签: angular html5 typescript

我正在组件的NgOnInit函数中加载“客户端”数组。调用之后,我要初始化一个类型为“ TimeSheet”的数组,其中将“客户端”作为元素。我这样做是这样的:

init(clients : Client[]) {
    let i = 0;
    this.timeSheets = new Array(clients.length);
    for(let client of clients) {
        console.log("client firstname" + client.firstName);
        this.timeSheets[i] = new TimeSheet();
        this.timeSheets[i].client = client;
        console.log("client last name in timesheet: " + 
        this.timeSheets[i].client.lastName);
        i++;
    }
}    

浏览器控制台打印出的图像显示了客户端的正确值:

client firstname Hans
client last name in timesheet: Müller
client firstname John
client last name in timesheet: Smith
client firstname Marie
client last name in timesheet: Curie

但是,在我的HTML模板中,仅显示第一个元素。这是我放在前端的部分:

<tr *ngFor="let timeSheet of timeSheets ;trackBy: trackId">
    <td>{{timeSheet.client.lastName}}</td>
    <td>{{timesheet.client.firstName}}</td>
    <td><input type="text" (change)="calculate($index)"></td>
    <td><input type="text"></td>
</tr>

奇怪的是,仅在第一个“时间表”中显示“客户端”的“姓氏”,其余的似乎都失败了,而没有说明原因。由于我的标签也消失了,我想我的html代码中有一些错误。我的浏览器控制台还指示“客户端”未定义,这使我困惑,因为第一个元素已正确打印。

ERROR TypeError: Cannot read property 'client' of undefined

是这样的: enter image description here

此外,按钮标签和表标题都消失了,所以我想代码中有一些错误。请帮我找到它。

1 个答案:

答案 0 :(得分:3)

{{timesheet.client.firstName}}
应该是
{{timeSheet.client.firstName}}
笔记盒