2017-03-02 32 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

我在代碼中做了同樣的事情,當我想要顯示數據但是在路由中不起作用時,它完美地工作。 –