Я думаю, ты смешиваешь две вещи. Ваш getUrl возвращает обещание, а не строку, поэтому вы должны быть в состоянии сделать это.
this.getUrl().then((url: string) => { this.baseurl = url; }
Или .. вы можете установить baseurl из вашего http-запроса, так как вы подписываетесь на результат, поэтому в действительности нет необходимостивернуть обещание.
subscribe((data: any) => { this.baseurl = data.data; }
Пример кода:
geturl(){
return new Promise(resolve => {
this.http.get('http://localhost/mechmarcl_website/index.php/Admin/getpublicip')
.map(res => res.json())
.subscribe((data: any) => {
// you receive the data here, so you can use the data here
// For example:
this.baseurl = data.data;
// what you tried to do here I think with this line?
this.url= JSON.stringify(data.data);
resolve ((data.data));
}, error => {
resolve(error);
});
});
}
Или способ обещания.
constructor(public http: Http) {
this.geturl().then((url: string) => {
this.baseurl = url;
}, (err: any) => {
// handle your promise rejection here
}
});
}