<div *ngFor="let post of posts">
<div [innerHtml]="getPostContent(post.content)" #postContentDiv></div>
<button *ngIf="getPostContentHeight(postContentDiv)">Show more</button>
</div>
功能
getPostContent(content: any): any {
return this.sanitizer.bypassSecurityTrustHtml(content);
}
getPostContentHeight(postDiv: any): boolean {
return postDiv.offsetHeight > 50;
}
我有几个帖子(标题,作者,内容等)如果Show more
高于50px,我想要显示按钮postContentDiv
。问题是这一行:
<button *ngIf="getPostContentHeight(postContentDiv)">Show more</button>
正在此行之前运行:
<div [innerHtml]="getPostContent(post.content)" #postContentDiv></div>
效果? getPostContentHeight
在#postContentDiv
填满之前检查post.content
身高。当我开始列表所在的组件或刷新页面时,一切正常,但当我更改为另一个组件并返回时它不起作用。
简而言之:getPostContentHeight
在另一个修改getPostContentHeight
参数的函数之前运行得太快。
组件X是具有帖子列表和视图的组件。 组件Y是另一个仅用于帮助的组件。
从http://localhost:4200/X
开始 - 我看到了Show more
个按钮。
当我现在更改为组件Y然后再更改为X时,没有Show more
按钮。当Angular进行第二次检查时,它们会在几秒钟后出现。
答案 0 :(得分:0)
我建议你谷歌Promises,因为它可以让你保持一个功能从启动到发生之前发生的任何事情(并且完全)。
所以你会有类似的东西:
new Promise(etPostContent(post.content)).then(getPostContentHeight(postContentDiv));
&#13;