订阅服务 returns `undefined` 值
Subscribing to service returns `undefined` values
我正在尝试订阅一个试图使用以下对象访问 REST 后端的服务。
export class Country {
iso: String;
iso3: String;
name: String;
niceName: String;
numCode: number;
phoneCode: number;
constructor(values: Country = {}) {
Object.assign(this, values);
}
}
这是从API获取数据的服务方法,数据成功获取到map()
函数。
public getCountries(): Observable<Country[]> {
return this.http.get(COUNTRY_URL).pipe(
map(response => {
const countries = response.json()._embedded.countries;
return countries.map((country) => { new Country(country) });
}),
catchError(this.handleError)
);
}
这是订阅服务的消费者。
countries: Country[] = [];
constructor(private countryService: CountryService) {
countryService.getCountries()
.subscribe(countries => {
this.countries = countries;
});
}
country
变量最终成为 undefined
个对象的数组。
Additional Info
I am using Angular 6 with RXJS6 and followed the migration
guide
here
这是一个示例 API 响应。
{
"_embedded" : {
"countries" : [ ... ]
},
"_links" : {
"first" : {
"href" : "http://localhost:8080/api/countries?page=0&size=20"
},
"self" : {
"href" : "http://localhost:8080/api/countries{?page,size,sort}",
"templated" : true
},
"next" : {
"href" : "http://localhost:8080/api/countries?page=1&size=20"
},
"last" : {
"href" : "http://localhost:8080/api/countries?page=11&size=20"
},
"profile" : {
"href" : "http://localhost:8080/api/profile/countries"
},
"search" : {
"href" : "http://localhost:8080/api/countries/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 239,
"totalPages" : 12,
"number" : 0
}
}
有人能看出我的代码有什么问题吗?任何帮助将不胜感激。
看起来您在 new Country(country)
之前缺少 return
(或者,删除周围的花括号)。
我正在尝试订阅一个试图使用以下对象访问 REST 后端的服务。
export class Country {
iso: String;
iso3: String;
name: String;
niceName: String;
numCode: number;
phoneCode: number;
constructor(values: Country = {}) {
Object.assign(this, values);
}
}
这是从API获取数据的服务方法,数据成功获取到map()
函数。
public getCountries(): Observable<Country[]> {
return this.http.get(COUNTRY_URL).pipe(
map(response => {
const countries = response.json()._embedded.countries;
return countries.map((country) => { new Country(country) });
}),
catchError(this.handleError)
);
}
这是订阅服务的消费者。
countries: Country[] = [];
constructor(private countryService: CountryService) {
countryService.getCountries()
.subscribe(countries => {
this.countries = countries;
});
}
country
变量最终成为 undefined
个对象的数组。
Additional Info
I am using Angular 6 with RXJS6 and followed the migration guide here
这是一个示例 API 响应。
{
"_embedded" : {
"countries" : [ ... ]
},
"_links" : {
"first" : {
"href" : "http://localhost:8080/api/countries?page=0&size=20"
},
"self" : {
"href" : "http://localhost:8080/api/countries{?page,size,sort}",
"templated" : true
},
"next" : {
"href" : "http://localhost:8080/api/countries?page=1&size=20"
},
"last" : {
"href" : "http://localhost:8080/api/countries?page=11&size=20"
},
"profile" : {
"href" : "http://localhost:8080/api/profile/countries"
},
"search" : {
"href" : "http://localhost:8080/api/countries/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 239,
"totalPages" : 12,
"number" : 0
}
}
有人能看出我的代码有什么问题吗?任何帮助将不胜感激。
看起来您在 new Country(country)
之前缺少 return
(或者,删除周围的花括号)。