Код, который у вас есть для хранения userResult, не является обещанием, это подписка:
async readUser(id){
// this block is wrong, userResult is a subscription
this.userResult = await this.http.get<user>("http://localhost:8090/user/" +id).subscribe(
data => {
this.user = data;
},
error =>{
return console.error();
;
}
)
console.log("Fuuhhh! Client will wait till promise is resolved.");
}
Если вы хотите использовать обещания (но вы должны наблюдать в Angular), вы можете сделать он использует метод toPromise()
следующим образом:
async readUser(id){
try {
this.userResult = await this.http.get<user>("http://localhost:8090/user/" +id).toPromise();
this.user = this.userResult // if you really want an extra step here
} catch(error) {
console.log(error);
}
}
Что касается вашего вопроса, вы должны использовать *ngIf
для этого случая.
Для блоков кода используйте его с ng-container
, например :
<ng-container *ngIf="user">
.....
</ng-container>