我正在学习Angular 2,我试图在页面加载时为我拥有的JSON数据调用一个简单的HTTP Get请求,并在页面加载时操纵该JSON。谁能告诉我一些基本的例子如何做到这一点?我从Beta版本上看到网络上的大部分解决方案。
答案 0 :(得分:4)
创建如下服务:
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/Rx';
import {Observable} from 'rxjs/Rx'
export class MyService {
constructor(public http: Http) { }
private extractData(res) {
if (res.status < 200 || res.status >= 300) {
throw new Error('Bad response status: ' + res.status);
}
// console.log(res.json());
this.serviceData = (res.json());
return this.serviceData || {};
}
loaddata(): Observable<any> {
return this.http.get(this.server_url) // define a variable server_url to assign the requested url
.map(this.extractData);
}
}
现在,在您的组件ngOnInit
方法中,通过调用此服务方法获取值。
class MyComponent{
constructor(public _myService: MyService)
ngOnInit(){
this._myService.loaddata().subscribe(data => {
// do something with the data
})
}
}
答案 1 :(得分:0)
要获得可观察性,您可以按照以下示例进行操作。 getStories
方法使用注入的HTTP服务并返回一个observable,可以进一步用于获取响应。
@Injectable()
export class StoriesService {
constructor(private http:Http,private constService :ConstantsService) { }
public getStories()
{
this.http
.get(this.constService.apiBaseUrl + "Stories/Stories")
.subscribe ((data: Response) => console.log(data));
}
}
这是一个简单的HTTP Get Service Example。