我有这样的Json回复。
{
"response": {
"my_students": {
"students": [
{
"studentNumber": "123",
"studentName": "ABC"
"studentaddresse": [
{
"address": "test"
}
]
},
{
"studentNumber": "345",
"studentName": "CDS"
"studentaddresse": [
{
"address": "test1"
}
]
}
]
}
}
}
点击按钮,我必须获取这些数据。 为此,在 component.ts 文件中,我有这段代码
studdata=[];
ngOnInit(){
this.studdata= this.studentService.loadStudents();
}
在 student.service.ts 文件中,我有这段代码
loadStudents(): any{
return this.loginService.getStudentData();
}
在 login.Service.ts 文件中,我有这段代码 //在按钮上单击我正在调用 getStudentResponseData()此方法 在控制台中获取数据。但在 getStudentData()方法中我没有获取数据
student_data: Object;
public getStudentResponseData() : Promise<any> {
if(typeof(this.student_data) === "undefined") {
return this.http.get('assets/studentapi.json')
.toPromise().then(res => {
this.student_data = res.json().response;
console.log("data"+this.student_data);
return this.student_data;
}).catch(this.handleError);
} else {
return Promise.resolve(this.student_data);
}
}
public getStudentData(): Object {
return this.student_data;
}
任何人都可以帮助我,我做错了吗? 我想在html中显示值,如何在这里显示学生编号。
<div *ngFor="let stu of studdata">
<div>{{stu.studentNumber}}</div>
</div>
答案 0 :(得分:2)
loadStudents()
返回一个Promise。因此,在您的组件中,代码必须类似于:
ngOnInit(){
this.studentService.loadStudents()
.then((students) => {
this.studdata = students;
});
}
答案 1 :(得分:1)
因为此方法是异步的。您可以在 $addressFields .= sprintf('
<div style="position: relative">
<input type="text"
title=%s
name="billing[street][%s]"
id="billing:street%s"
value="%s"
class="%s input-text validate-address-lenght maximum-length-%s"
/>',
$title = $this->__('Street Address ' . ($_i + 1)),
$name = $_i,
$id = $_i + 1,
$value = $dataHelper->clearDash($this->getQuote()->getBillingAddress()->getStreet($_i + 1)),
$class = ($_i === 0) ? 'required-entry ' : '',
$max = 'YOUR_MAX_VALUE_HERE'
);
由于方法的异步,您无法从.Promise().then ( ... you can handle data here ...)
函数获取数据。