Вы должны использовать как наблюдаемую, так и подписаться на нее.Если вы не хотите конкретно обещание, по умолчанию оно является наблюдаемым, и оно должно оставаться таким.Теперь вы ничего не возвращаете из doPost.это должно быть что-то вроде этого:
public getToken(){
return this.http.get(<url>);
}
public doPost(){
var result: Subscription = this.getToken().subscribe(token => {
return this.http.post(<url>,token);
});
}
А затем вы можете разрешить эту подписку и получить еще одну наблюдаемую, если вы этого хотите.
Если вы хотите конкретно пообещать вам "toPromise() "для наблюдаемого результата.
Я бы на вашем месте подписался на наблюдаемое в классе, который вы используете, и присваиваете переменную, которую вы используете внутри этого класса, как только результатвернулся или разрешите i в асинхронном канале в html-части.
Что-то вроде этого должно дать вам подсказку:
public getToken(){
return this.http.get(<url>);
}
public doPost(){
this.getToken().subscribe(token => {
this.yourvariable = this.http.post(<url>,token);
});
}
Или
<div *ngFor="let x in yourVariable | async"></div>