У меня есть следующее в приложении Angular 7:
<ng-container *ngIf="(post$ | async) as post; else loader">
<div *ngIf="post; else empty">
Post content
</div>
</ng-container>
<ng-template #empty>
Post not found
</ng-template>
<ng-template #loader>
Loading post
</ng-template>
Это прекрасно работает, когда определено сообщение ...
Однако, когда post
не определено, "Сообщение не найдено""не показывает ...
... Я вижу сообщение о загрузке, которое не исчезает.
Чего мне не хватает?
Обновление
post $ определяется в компоненте следующим образом:
Примечание: post $ не является массивом.См. envelope.result [0] в коде.
export class PostDetailComponent implements OnInit {
@Input() postId: number;
post$: Observable<PostDetailModel>;
constructor(private postService: PostService) { }
ngOnInit() {
this.post$ = this.getPost();
}
getPost(): Observable<PostDetailModel> {
return this.postService.getByPostId(this.postId).pipe(
map((envelope: Envelope<GetByPostIdResponse>) => envelope.result[0]),
map((response: GetByPostIdResponse) => {
return response == null ? null : {
id: response.id,
title: response.title
// other properties
};
}));
}