2017-01-18 14 views
0

Я новый для angular2, я http.get ("url") метод get json type data, как установить тип данных типа typescript (ниже see- (это часть ответа данные)) в угловом объекте.
Как установить тип данных для ответа json данных в angular2

это часть данных отклика:

{ 
"items":[ 
{ 
"aliases":[ 
"http://www.xyz.in", 
"http://facebook.xyz.in" 
], 
"styling":{ 
"tag_background_color":"#E0EAF1", 
"tag_foreground_color":"#3E6D8E", 
"link_color":"#0077CC" 
}, 
"related_sites":[ 
{ 
"relation":"meta", 
"api_site_parameter":"meta.xyz", 
"site_url":"http://met.xyz.in" 

}, 
{ 
"relation":"chat", 
"name":"Stack Overflow Chat" 
} 
], 
"markdown_extensions":[ 
"Prettify" 
], 
"launch_date":1221436800, 
"closed_beta_date":1217462400, 
"site_state":"normal", 
"favicon_url":"https://cdn.sstatic.net/Sites/xyz/img/favicon.ico", 
"name":"Stack Overflow", 
"site_type":"main_site" 
}]} 

я сотвори:

import {Related_sites,Styling} from "./all_type1"; 
    import {Injectable} from "@angular/core"; 
    export interface Items{ 
     aliases:any; 
     styling:Styling[];  
     related_sites:Related_sites[]; 
     markdown_extensions:any; 
     launch_date: number; 
     closed_beta_date: number; 
     site_state: string; 
     favicon_url: string; 
     name: string; 
     site_type: string;} 

и

export interface Styling { 
    tag_background_color: string; 
    tag_foreground_color: string; 
    link_color: string; 
} 
export interface Related_sites{ 
    related_sites:[ 
     { 
     relation:string; 
     api_site_parameter:string; 
     site_url:string; 
    }, 
    { 
     relation:string; 
     name:string; 

    }] 
} 

это правильный путь или нет ?? любой помощи ...

+0

Где это не указано в вашем коде? – echonax

+0

Это зависит от того, что вы ожидаете. 'as Items []' только сообщает IDE, что безопасно предположить, что 'data' является' Items [] ', но он не имеет никакого эффекта до выполнения, если это не так. Во время выполнения это приведет к ошибке, когда эти данные фактически не соответствуют интерфейсу. –

+0

@ suresh.t Не могли бы вы высказать точное сообщение об ошибке? –

ответ

1

Вы должны изменить следующее в службе

.then(response =>response.json().data as Items[]) 

к:

.then(response =>response.json() as Items[]) 

то он должен работать нормально, по крайней мере, когда я тестировал :)

и так как вы не указали, что происходит в вашем компоненте, давайте добавим, что здесь:

this.myService.getItemData() 
     .then(data => { 
      this.items = data 
    }) 
+0

Помог ли вам этот ответ? – Alex