html - ngAfterViewInit 更改时,Angular 不会将值更新为 View
问题描述
我有这个考虑
<span [ngStyle]="{width: optionActiveWindowSize}" class="option-active-window"></span>
<ng-container *ngFor="let op of options; let i = index">
<div [ngClass]="{active: i === activeIndex"}></div>
</ng-container>
TS代码
ngAfterViewInit(): void {
const activeOption =
this.horizontalOptionRef.nativeElement.getElementsByClassName('active');
this.optionActiveWindowSize = activeOption[0].offsetWidth + 'px';
}
optionActiveWindowSize 的值在 afterViewInit 中更改后不会在 DOM 中更改。你能告诉我为什么以及如何解决它吗?
解决方案
可能有几个问题。
确保optionActiveWindowSize具有
px
最后定义的字符串值,例如,例如。
optionActiveWindowSize = '20px'
. 然后,[ngStyle]="{width: optionActiveWindowSize}"
应该管用。
我假设 optionActiveWindowSize的数值类似于
optionActiveWindowSize = 20
,那么您应该将其更改为,[ngStyle]="{ 'width.px': optionActiveWindowSize}"
或者
[style.width.px]="optionActiveWindowSize"
希望,这会有所帮助!
注意:忘了提到@M Fuat NUROGLU,span
没有width
道具。因此,您可能希望将其更改为div
.
推荐阅读
- java - 这是在构建器对象中创建空集的最佳方法
- sap - SAP HANA 工作室使用什么协议来与 HANA 数据库通信?
- java - ClassCastException: getApplication() 返回一些奇怪的东西
- javascript - JavaScript 存款利息计算器
- c++ - 快速排序的递归代码
- webpack - 如何在 Vue.js cli 项目中使用外部 Javascript 库?
- r - 使用包下载进行网络分析
- c# - 何时使用 System.Convert 以及何时使用 System.BitConverter
- php - MySQL:如果值存在,则对行进行更新,如果值不存在,则进行插入
- android - Gradle 同步失败 - “com.google.android.gms:play-services-base”