我是棱角分明的新人。我有一个json文件,我可以配置我需要在我的应用程序中使用的URL。
应用程序/配置/ 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
}
答案 0 :(得分:1)
你可以这样做。 在您的服务文件中。
//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");
}
)
}