return 数组在 angular 4 中未定义
return array is undefined in angular 4
我正在从 Web 服务获取数据并尝试在我的 service
.web 服务 returns json
对象下使用 toPromise
。
[
{
"username": "jack",
"joinDate": "2017-10-28T00:00:00",
"expireDate": "2017-10-31T00:00:00",
"isActive": true,
"userurl": "https://dummy.com",
"masterkey": "77uyerue987930000",
"appkey": "hdhfjd98984300000",
"id": 49
},
{
"username": "paul",
"joinDate": "2017-10-28T00:00:00",
"expireDate": "2017-10-31T00:00:00",
"isActive": true,
"userurl": "https://dummy.com",
"masterkey": "98dfdf88",
"appkey": "89fdf98",
"id": 49
}
]
then here is my method to consume response from web service :
returntestData() {
const url:string = 'https://userportal/api/company';
this.nhttp.get(url)
.toPromise()
.then(res => <Users[]> res.json().data)
.then(
data => {
console.log(data)
return data
}
);
}
所以数据总是未定义的。那么我不能在我的组件中使用它。
in other hand I tried below
getallCompanies(): Users[] {
let UsersDetails: Users[] = [];
const url:string = 'https://userportal/api/company';
this.http.get<[{Users}]>(url).subscribe(
data => {
for(var i=0;i<data.length;i++) {
let newuser = new Companies(data[i]["username"],data[i]["id"],data[i]["isActive"],data[i]["joinDate"],data[i]["expireDate"],data[i]["appkey"],data[i]["masterkey"],data[i]["userurl"]);
UsersDetails.push(newuser);
}
console.log("full data from service : "+ UsersDetails);
return UsersDetails;
},
err => {
console.log("error occured while calling to web service");
console.log(err)
}
);
return UsersDetails;
}
以上代码 returns 值正确。但它 returns 查看 loaded.not 一个 async
调用后的值。希望您对此有所帮助。
如果您使用新的 HttpClient
,则没有 res.json
方法。它会自动工作,只需像这样传递响应类型:
returntestData() {
const url:string = 'https://userportal/api/company';
return this.http.get<Users[]>(url)
.toPromise()
.then(data => {
console.log(data)
return data
});
}
还取决于接口Users
。
我正在从 Web 服务获取数据并尝试在我的 service
.web 服务 returns json
对象下使用 toPromise
。
[
{
"username": "jack",
"joinDate": "2017-10-28T00:00:00",
"expireDate": "2017-10-31T00:00:00",
"isActive": true,
"userurl": "https://dummy.com",
"masterkey": "77uyerue987930000",
"appkey": "hdhfjd98984300000",
"id": 49
},
{
"username": "paul",
"joinDate": "2017-10-28T00:00:00",
"expireDate": "2017-10-31T00:00:00",
"isActive": true,
"userurl": "https://dummy.com",
"masterkey": "98dfdf88",
"appkey": "89fdf98",
"id": 49
}
]
then here is my method to consume response from web service :
returntestData() {
const url:string = 'https://userportal/api/company';
this.nhttp.get(url)
.toPromise()
.then(res => <Users[]> res.json().data)
.then(
data => {
console.log(data)
return data
}
);
}
所以数据总是未定义的。那么我不能在我的组件中使用它。
in other hand I tried below
getallCompanies(): Users[] {
let UsersDetails: Users[] = [];
const url:string = 'https://userportal/api/company';
this.http.get<[{Users}]>(url).subscribe(
data => {
for(var i=0;i<data.length;i++) {
let newuser = new Companies(data[i]["username"],data[i]["id"],data[i]["isActive"],data[i]["joinDate"],data[i]["expireDate"],data[i]["appkey"],data[i]["masterkey"],data[i]["userurl"]);
UsersDetails.push(newuser);
}
console.log("full data from service : "+ UsersDetails);
return UsersDetails;
},
err => {
console.log("error occured while calling to web service");
console.log(err)
}
);
return UsersDetails;
}
以上代码 returns 值正确。但它 returns 查看 loaded.not 一个 async
调用后的值。希望您对此有所帮助。
如果您使用新的 HttpClient
,则没有 res.json
方法。它会自动工作,只需像这样传递响应类型:
returntestData() {
const url:string = 'https://userportal/api/company';
return this.http.get<Users[]>(url)
.toPromise()
.then(data => {
console.log(data)
return data
});
}
还取决于接口Users
。