我想在 Angular 中实现聊天。聊天的每个项目(消息)都有一个标题(标题/名称),应该有一个特定的边距。边距应根据 div 的高度计算。代码看起来像这样。
<div *ngFor="let item of chatArray">
<div #juliet [style.margin-top.px]= "-(juliet.clientHeight/2)">
{{item.message}}
</div>
</div>
问题出在 Chrome 浏览器中(在 Mozilla 中没有问题)。控制台错误是:“ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:'margin-top:-40.5'。当前值:'margin-top:-40'。”。
在 ts 文件中,我尝试实现更改检测:
ngOnInit() {
//code for chat initialization
this.cdRef.detectChanges();
}
ngAfterViewInit() {
this.cdRef.detectChanges();
}
ngAfterContentChecked() {
this.cdRef.detectChanges();
}
如果我在 .ts 文件中添加
@Component({
...
changeDetection: ChangeDetectionStrategy.OnPush
})
错误消失了,但边距小于应有的值。我想摆脱错误并根据 div 高度计算右边距。
我会很感激你有任何想法。谢谢!