如何在添加css类更改offsetWidth和OffsetSight值后获取它们

如何在添加css类更改offsetWidth和OffsetSight值后获取它们,css,angular,Css,Angular,我有一个更新css类的组件 。滑块水平{ 宽度:210px; 高度:20px; }我用一个工作示例制作了一个plnkr,您可以在这里找到它:,但是结果似乎和预期的一样: 679 0 210 20 所以在我看来,它似乎是工作 虽然我非常确定在您的案例中没有运行更改检测,但您应该尝试手动调用它 将其添加到构造函数中 private changeDetectorRef: ChangeDetectorRef 所以你的构造函数看起来像这样 constructor(private renderer:

我有一个更新css类的组件

。滑块水平{
宽度: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()但没有什么不同。