我是新来的角度。我有一个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");
}
)
}