如何以角度映射嵌套接口

时间:2018-05-22 08:01:01

标签: angular

我已经制作了两个接口

export interface IUser {
    name: string;
    age: number;
    address: IAddress
}

export interface IAddress {
    city: string;
    country: string;
}

现在我正在尝试创建一个映射器服务并映射接口中收到的数据并将其返回。

mapTheData(data): IUser {
    let result: IUser;

    result.name = data.name;
    result.age = data.age;
    result.address.city = data.city;
    result.address.country = data.country;

    return result;
}

现在我从一个不同的服务文件中调用这个。

getData() {
    let mappedData: IUser;

    let response = //http call;

    mappedData = this.serviceName.mapTheData(response);
    return mappedData;
}
在http呼叫之后,我收到的回复是

{
  name: 'ABC',
  age: '20,
  city: 'abcd',
  country: 'xuasd'
}

当我执行上述操作时,我收到错误,指出未定义的名称,未定义的城市。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

试试这个。

mapTheData(data: any): IUser {
    const result: IUser;

    result.name = data.name;
    result.age = data.age;
    result.address = {
       city: data.city,
       country: data.country
    };
    return result;
}

或者你可以这样做。

const mappedUser = <IUser>data;

答案 1 :(得分:0)

未定义地址属性。将以下对象分配给您的地址属性:

result.name = data.name;
result.age = data.age;
result.address = {
  city: data.city,
  country: data.country
};