2017-05-06 6 views
0

私のメソッドで制御フローに問題があります。どのようにしてサーバーからのデータを待つことができますか?サービスのコンストラクタでデータを準備し、注入後にすべてのコンポーネントでシングルトンで取得することは可能ですか?タイプスクリプトサーバからの同期データを取得

import { Permission } from '../_models/Permission'; 
import { Injectable, OnInit } from "@angular/core"; 
import { AuthService, AppHttpService } from '../_services/index'; 
import { RequestActionType } from '../_models/RequestActionType'; 


@Injectable() 
export class PermissionService { 

    private getUrl: string = "/Permission/GetAllPermissions"; 
    private permissions: Permission[] = []; 

    constructor(private httpService: AppHttpService, private authService: AuthService) { 

     this.PreparePermissionData(); 
    } 

    public PreparePermissionData() { 
     if (this.authService.loggedIn()) { 
      this.httpService.authGet(this.getUrl).then(response => { 
       this.permissions = response.Data as Permission[]; 
      }); 
     } 
+0

https://basarat.gitbooks.io/typescript/docs/promise.html – Roljhon

+0

[Angular 2 - Observableから直接データを返す]の可能な複製(http://stackoverflow.com/questions/37867020/angular- 2-return-data-from-the-observable) – jonrsharpe

+0

チュートリアルでは、HTTP経由でデータを取得する方法についてのセクションもあります(https://angular.io/docs/ts/latest/tutorial/toh-pt6.html )。 – jonrsharpe

答えて

0
import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import {Observable} from 'rxjs/Observable' 

export class MyService { 
    private getUrl:string = "/Data/GetData" 
    constructor(private http: Http) { } 

    public DoSomething(){ 
    let myData = []; 

    this.http.get(this.getUrl).map(res => res.json()).subscribe(data => { 
     this.somethingWithData(data) 
    }); 

    } 
    public somethingWithData(data) { 
    //do anything here with data 
    } 
} 
0

それは後の注入サービスのコンストラクタでデータを準備し、すべてのコンポーネントでシングルトンでそれを取得することはできますか?

関連する問題