【发布时间】:2017-06-01 00:04:42
【问题描述】:
我有一个更新 css 类的组件
.slider-horizontal {
width: 210px;
height: 20px;
}
如何获取应用 css 后更改的新值?
【问题讨论】:
-
请提供一个 plunker 来证明您的问题。
我有一个更新 css 类的组件
.slider-horizontal {
width: 210px;
height: 20px;
}
如何获取应用 css 后更改的新值?
【问题讨论】:
我制作了一个带有工作示例的 plnkr,您可以在此处找到它: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
}
现在您将在控制台中看到的值应该没问题。
【讨论】:
detectChanges 在这里是多余的。如果@loi mai 提供一个真实的例子会很棒
this.changeDetectorRef.detectChanges();,但没有什么不同。