2016-07-28 67 views
0

im有點新的angular2,我希望你能幫助我我很肯定它必須是簡單的東西,但這是交易即時通訊服務,可以處理http調用,但它的需要應用一些過濾器中的數據,而不要求加載之後再次以新的參數基本上我想要讓angular2處理的那部分angular 2 rc4從Http observable獲取數據後創建變量

更新** API服務器

服務

httpHandler(type,model){var token = this.LoginService.JwtDecoded(); var authHeader = new Headers(); authHeader.append('Authorization', 'Bearer ' + token);

return this.http.get('http://127.0.0.1/api/service/'+model, { 
     headers: authHeader 
     }) 
    .map((res: Response) => res.json()); } 

組件

this.Request.httpHandler('get','receiver/') 
.subscribe(
    data => this.data = data, <-- from here 
    err => this.error = 'there is a mistake!', 
    () => console.log(this.data) <-- this one is outputing just what i want 
); 
console.log(data); <-- i wanna output the same result in here 

所以,我怎樣才能捕捉API導致到一個變量?

更新** 我想輸出'this.data'外部訂閱,奇怪的是,我可以輸出內部訂閱和在html中,但我需要做一些與該json輸出前的東西在html中。任何想法的傢伙?謝謝!

感謝您的時間夥計,非常感謝。

+0

可爲了有一個最小的,完整的和可驗證的例子,你應該詳細說明你目前的問題是什麼。它現在做了什麼,爲什麼這是錯的? – bpachev

回答

2

創建服務來獲取數據

// xyz.service.ts 

import {Injectable} from '@angular/core'; 

import {Http, Response} from '@angular/http'; 
import {Observable} from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class DataService { 
    private url = `receiver/`; 

    constructor(private http: Http) { 
    } 

    getData(): Observable<any> { 
    return this.http.get(this.url) 
     .map((res: Response) => res.json()); 
    } 
} 

現在使用該服務的組件。現在

//xyz.component.ts 

import {Component, OnInit} from '@angular/core'; 

import {DataService} from './xyz.service'; 

import {HTTP_PROVIDERS} from '@angular/http'; 

@Component({ 
    selector: 'app-home-content', 
    templateUrl: 'xyz.component.html', 
    styleUrls: ['xyz.component.scss'], 
    providers: [DataService, HTTP_PROVIDERS] 
}) 
export class HomeContentComponent implements OnInit { 
    private data: Object; 

    constructor(private _dataService: DataService) { 
    } 

    ngOnInit() { 
    this._dataService.getData().subscribe(data => { 
     this.data = data; 
    }); 
    } 
} 

數據將在this.data

+0

謝謝里茲我試圖做你說的,我不能讓它的工作,奇怪的是,我可以輸出內部訂閱或在像數據?。名稱的HTML,但我不能輸出外訂閱在相同的功能..做你有什麼想法? – NanName

+0

這是因爲它的一個異步功能。如果您想要任何數據,您必須在訂閱中進行。它可以在HTML中訪問,因爲角度在檢測到this.data已經改變時會自動更新視圖。我寧願你從訂閱裏面調用一個函數,然後在裏面用'this.data'做任何你想做的事情,然後它就可以使用了。 – ritz078