为什么我的函数第二次被调用时未定义?

时间:2018-07-17 21:13:17

标签: angular typescript

以我的方式

private onDataLoadSuccessful(users: User[], roles: Role[]) {

    this.alertService.stopLoadingMessage();
    this.loadingIndicator = false;
    this.dataSource.data = users.map(data => {
        let newData: User;
        newData = Utilities.toCamel((data));
        return newData;
    });

    this.allRoles = roles.map(function (data) {
        let newData: Role;
        newData = Utilities.toCamel(data);
        return newData;
    });
}

我两次致电Utilities.toCamel(data)。第一次将Users[]转换为驼峰式大小写,第二次将Roles[]转换为驼峰式大小写

第二次称为:

 this.allRoles = roles.map(function (data) {
        let newData: Role;
        newData = Utilities.toCamel(data);
        return newData;
    });

它导致此错误:TypeError: Cannot read property 'toCamel' of undefined

我想念什么? 谢谢!

2 个答案:

答案 0 :(得分:1)

像第一次一样做:

this.allRoles = roles.map(data => {
    let newData: Role;
    newData = Utilities.toCamel(data);
    return newData;
});

答案 1 :(得分:0)

您必须使用箭头功能,即() =>而不是function关键字。像这样:

this.allRoles = roles.map( (data) => {
    let newData: Role;
    newData = Utilities.toCamel(data);
    return newData;
});