我是新来的角度。我有一个json文件,在那里我可以配置我需要在我的应用程序中使用的url。
app/config/development.json应用程序

{
   "apiUrl": "http://staging.domain.com:9000/",
   "debugging": true
}

下面是我在config.service.ts中的代码:
export class ConfigService {
    private apiURL:any;
    constructor (private http: Http) {}

   getApiURL(){
       this.http.get("app/config/development.json").map(res:Response=>res.json())
      .subscribe(data=>{
         this.apiURL = data;

       })

        console.log(this.apiURL);//this returns undefined
   }

}

我想使this.apiURL包含http.get的响应。
当我创建另一个方法时,this.apiURL的值仍然与方法getAPIURL()的值相同。
someMethod()
{
   console.log(this.apiURL)//this must contain the response from http.get
}

最佳答案

你可以这样做。
在你的服务文件里。

//whatever model u defined
       getApiURL():Observable<Object[]>{
      return this.http.get(this.whateverURL)
                .map(res:Response=>res.json())
                .catch((error:any) => Observable.throw(error.json().error || 'Server error'));
  }

在组件文件中
  yourData:Object[];
  //whatever Model u defined.
  //assuming yourService is your service instance which u did in constructor.
  this.yourService.getApiURL()
        .subscribe(
            yourData=>{
              this.yourData=yourData;
            },err=>{
              console.log(err);
              alert("Something went wrong");
            }
        )
  }

10-06 15:47