[英]How to load this JSON data into Angular2
我是Angular2的新手,我想加载这个Json数据并在页面中显示,我不知道该怎么办..? 从所有来源我了解到我制作了一个代码并将其附加到下面,但由于某些错误它没有运行,任何人都可以帮我修复或为我编写新代码,以便我可以从中学习。
先谢谢您的帮助。
我的代码文件 - student.json
[ { "name": "John", "id_number": "12", "attendance": "276 days", "grade": "A" }, ],
这是我的students.service.ts代码
import {Injectable} from '@angular/core';
import { Http, Response } from '@angular/http';
@Injectable()
export class StudentsService {
constructor(private http:Http)
{
}
getStudents() {
return this.http.get('./students.json')
.map((response: Response) => {
console.log("mock data" + response.json());
return response.json();
}
}
而且,这是我的students.component.ts文件
import {Component} from '@angular/core';
import { Http, Response } from '@angular/http';
import {StudentsService} from './students.service';
import 'rxjs/add/operator/map'
import 'rxjs/Rx';
@Component({
selector: 'students',
templateUrl: 'students.html',
styleUrls: ['./students.scss']
})
export class students {
public students;
constructor( private _studentsService:StudentsService, private http:Http)
{
this.students = this._studentsService.getStudents();
}
ngOnInit() {
this._load();
}
private _load() {
this.students = this._studentsService.getStudents();
}
}
您可以编写一个服务来从json文件加载您的html,并在您的应用程序中提供,如下所示。
@Injectable()
export class ConfigService {
public config: any;
private configObs: Observable<any>;
constructor(private http: Http) {
}
public load(filename: string): Observable<any> {
if ( this.config ) {
return Observable.of(this.config);
} else {
this.configObs = this.http.get(filename).map((res) => {
this.config = this.config || res.json() || {};
return this.config;
});
}
return this.configObs;
}
}
你也可以把你的数据在打字稿类格式,如果该选项可用全球化志愿服务青年答案
将我们的json分配给变量
myData = [{
"name": "John",
"id_number": "12",
"attendance": "276 days",
"grade": "A"
},
...
...
],
在你的Html中
<ul>
<li *ngFor="let data of myData">
<div>{{data.name}}</div>
<div>{{data.id_number}}</div>
<div>{{data.attendance}}</div>
<div>{{data.grade}}</div>
</li>
</ul>
希望能帮助到你
您正在处理的是一个Observable students
,要么您需要手动subscribe
该observable,要么使用模板中的异步管道来处理您的订阅。
此外,您现在正在构造函数和OnInit
执行两次请求。 删除其中一个,我将删除构造函数中的那个,因为我喜欢保持一切远离构造函数,这不需要在那里,如下所述: https : //stackoverflow.com/a/35763811/ 6294072
回到订阅...要么:
this.students = this._studentsService.getStudents();
<div *ngFor="let student of students | async">
<p>{{student.name}}</p>
<!-- ... -->
</div>
要么:
this._studentsService.getStudents()
.subscribe(students => {
this.students = students;
})
<div *ngFor="let student of students">
<p>{{student.name}}</p>
<!-- ... -->
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.