2017-03-02 18 views
0

我需要通过从服务器获取的出口变种HEROES内部JSON数据导出的变量内的Web Service:英雄[]功能如何传递在角2 typescipt

链路是 https://angular.io/resources/live-examples/toh-5/ts/eplnkr.html

转到应用程序/模拟heroes.ts,文件containes下面的数据,

import { Hero } from './hero'; 

export var HEROES: Hero[] = [ 
    {id: 11, name: 'Mr. Nice'}, 
    {id: 12, name: 'Narco'}, 
    {id: 13, name: 'Bombasto'}, 
    {id: 14, name: 'Celeritas'}, 
    {id: 15, name: 'Magneta'}, 
    {id: 16, name: 'RubberMan'}, 
    {id: 17, name: 'Dynama'}, 
    {id: 18, name: 'Dr IQ'}, 
    {id: 19, name: 'Magma'}, 
    {id: 20, name: 'Tornado'} 
]; 

我需要这个数据从服务器获取而不是使用静态数据。我怎样才能实现它。

我已经取使用下面的代码的数据服务,

private serviceUrl = "http://localhost:9000/service"; 

getServiceOne(): Observable<Track[]> { 
    this.http.get(this.serviceUrl) 
     .map(res => res.json()); 

} 

输出是

[ 
    {id: 11, name: 'Mr. Nice'}, 
    {id: 12, name: 'Narco'}, 
    {id: 13, name: 'Bombasto'}, 
    {id: 14, name: 'Celeritas'}, 
    {id: 15, name: 'Magneta'}, 
    {id: 16, name: 'RubberMan'}, 
    {id: 17, name: 'Dynama'}, 
    {id: 18, name: 'Dr IQ'}, 
    {id: 19, name: 'Magma'}, 
    {id: 20, name: 'Tornado'} 
] 

只需要分析上面的数据出口VAR英雄:英雄[]

我该如何做到这一点。我是新来的打字稿,我花了3天的时间寻找输出,但没有结果。

+0

你尝试角内存-的WebAPI? –

+0

它将能够导出网页api数据,因为这是链接到路由页面,因此除非导出,否则其他模块将不起作用。那为什么我卡住了。 –

+0

它会暴露你的数据,你可以做真正的http,但没有一个真正的服务器 –

回答

0

如果您在后端有一个web api,您可以从服务器获取英雄。如果没有,那么你可以像文档中描述的那样模拟web api。有关更多信息,请参阅Simulating the web API

getHeroes(): Promise<Hero[]> { 
    return this.http.get(this.heroesUrl) 
      .toPromise() 
      .then(response => response.json().data as Hero[]) 
      .catch(this.handleError); 

,如果你不希望使用的承诺,那么你可以使用Rxjs Observables,你需要订阅获取数据。

getHeroes(): Observable<Hero[]> { 
    return this.http 
      .get('app/heroes') 
      .map(response => response.json().data as Hero[]); 

和组件

this._heroService 
    .getHeroes()  
    .subscribe(h => this.HEROES = h) 
+0

我在代码中做了同样的事情,当我想要显示数据但是在路由中不起作用时,它完美地工作。 –