我有一個頁面,顯示帖子列表,然後點擊每個帖子,我將顯示該帖子的評論。這工作正常,我想添加的是顯示一條消息,如果沒有評論被點擊的帖子。我試圖與建立模板這樣的:Angular 4 - 在異步調用後顯示消息
<li *ngFor="let post of posts" (click)="select(post)" >
{{ post.title }}
<ul *ngIf="currentPost == post && commentsVisible">
<ng-container *ngIf="currentPost.comments.length > 0;else message">
<li *ngFor="let comment of currentPost.comments" class="document">
<p>{{ comment.author }}</p>
<p>{{ comment.text }}</p>
</li>
</ng-container>
<ng-template #message>No comments for {{ post.title }}</ng-template>
</ul>
</li>
而在組分,我試圖首先設置空posts
陣列,和一個空currentPost
對象與屬性comments
:
posts: any[] = [];
currentPost: any = {};
currentPost.comments;
然後在select
我獲取的評論是這樣的方法:
this.postService.getComments(post.id)
.subscribe(
comments => this.currentPost.comments = comments,
);
但是,如果我這樣做,我得到一個錯誤:
posts.component.html:7 ERROR TypeError: Cannot read property 'length' of undefined
我怎樣才能避免這種錯誤,以及異步調用服務方法getComments
後檢查並顯示一條消息?
你能嘗試重現該問題在plunker。我嘗試過並且無法複製(使用Dani建議的安全導航操作符)。 – Alex