如何在添加css类更改offsetWidth和OffsetSight值后获取它们
我有一个更新css类的组件如何在添加css类更改offsetWidth和OffsetSight值后获取它们,css,angular,Css,Angular,我有一个更新css类的组件 。滑块水平{ 宽度:210px; 高度:20px; }我用一个工作示例制作了一个plnkr,您可以在这里找到它:,但是结果似乎和预期的一样: 679 0 210 20 所以在我看来,它似乎是工作 虽然我非常确定在您的案例中没有运行更改检测,但您应该尝试手动调用它 将其添加到构造函数中 private changeDetectorRef: ChangeDetectorRef 所以你的构造函数看起来像这样 constructor(private renderer:
。滑块水平{
宽度:210px;
高度:20px;
}
我用一个工作示例制作了一个plnkr,您可以在这里找到它:,但是结果似乎和预期的一样:
679
0
210
20
所以在我看来,它似乎是工作
虽然我非常确定在您的案例中没有运行更改检测,但您应该尝试手动调用它
将其添加到构造函数中
private changeDetectorRef: ChangeDetectorRef
所以你的构造函数看起来像这样
constructor(private renderer: Renderer,
private el: ElementRef,
private changeDetectorRef: ChangeDetectorRef) {
}
并按如下方式调用更改检测:
ngAfterViewInit() {
this.renderer.setElementClass(this.picker.nativeElement, 'slider-horizontal', true);
this.changeDetectorRef.detectChanges();
console.log(this.picker.nativeElement.offsetWidth);//old value
console.log(this.picker.nativeElement.offsetHeight);//old value
}
现在,您将在控制台中看到的值应该很好。请提供一个plunker来演示您的问题。我认为
检测更改
在这里是冗余的。如果@loi mai提供真实的example@yurzui我记得以前有过这样的问题,手动调用变更检测解决了这个问题(尽管是RC构建),但实际上一个代码示例将非常有用。谢谢您的plnkr。这就是我的代码的样子。但我用的是有角度的cli。有时它工作正常,但有时不正常。当我调试时,它的宽度会动态地跟随web浏览器窗口的宽度,我的意思是我在调试时更改了浏览器窗口的大小。我添加了this.changedtectorref.detectChanges()代码>但没有什么不同。