2016-11-25 2 views
1

Мне интересно, как получить данные в Angular 2 и поместить его в javascript. Я посмотрел учебник героя, и вот что я до сих пор придумал.Угловой 2 http получить использование Asp.net Core MVC

  1. Я создал службу с HTTP вар в конструкторе

  2. Я создал функцию в службе, чтобы получить статьи

    GetArticles(subverse : string) : Observable<Article[]> 
    { 
        console.log("GetArticles URL: " + this._getArticlesUrl + "/?subverse="+subverse); 
    
        return this.http.get(this._getArticlesUrl + "/?subverse="+subverse) 
          .map(this.extractData) 
          .catch(this.handleError); 
    } 
    
    private extractData(res: Response) 
    { 
        let body = res.json(); 
        return body.data || { }; 
    } 
    
    private handleError (error: Response | any) 
    { 
        // In a real world app, we might use a remote logging infrastructure 
        let errMsg: string; 
        if (error instanceof Response) { 
        const body = error.json() || ''; 
        const err = body.error || JSON.stringify(body); 
        errMsg = `${error.status} - ${error.statusText || ''} ${err}`; 
        } else { 
        errMsg = error.message ? error.message : error.toString(); 
        } 
        console.error(errMsg); 
        return Observable.throw(errMsg); 
    } 
    

Однако, я не» я понимаю, что наблюдаемое и почему я должен использовать его здесь?

Теперь этот код на самом деле вызывает мой URL и URL фактически возвращает данные статьи, как Json

ответ URL:

[{"id":1,"userID":"00d85571-e2d3-4817-8698-6aa1b184112b","title":"title","link":"http://google.com","text":"text","subverse":"home","votes":0,"isanon":false}] 

Вот моя статья класс:

export class Article { 
    id : number; 
    isanon : boolean; 
    title: string; 
    link: string; 
    text: string; 
    subverse : string; 
    userID : string; 
    votes: number; 
} 

Мои вопрос в том, как мне получить этот URL-ответ в статье [] в моем javascript? Я попытался

articlesO : Observable<Article[]>; 
    articles : Article[]; 

    this.articlesO = this.service.GetArticles(this.subverseStr); 

    this.articlesO.forEach(a => this.articles = a); 

Но мой this.articles остается undefined в коде. Как я должен прочитать URL-адрес json и превратить его в мой Articles[]?

Любая помощь приветствуется.

Спасибо.

ответ

1

Наблюдается как обещание, но как потоковая версия. Вы можете найти подробную информацию о обещаниях против наблюдаемых здесь: Angular - Promise vs Observable

И для вашей проблемы вы должны подписаться к наблюдаемым для того, чтобы уволить его.

Как это:

this.service.GetArticles(this.subverseStr).subscribe((data)=>{ 
    console.log(data); 
    //do something with the returned data. 
    this.articles = data; 
}); 
+1

@ClaySmith Что делает сервер вернуться к вам в закладке сети хрома? – echonax

+0

Я получил его для работы, удалив body.data из json-кода. Сервер возвращает ответ URL в моем исходном сообщении. Я думаю, что это работает! Большое вам спасибо за быстрый ответ. :) –

+1

@ ClaySmith Ах не проблема, рад, что вы это поняли :) – echonax

Смежные вопросы