Я не могу получить ширину ElementRef в директиве атрибута, так как она всегда равна 0
Элемент, в котором я определяю директиву атрибута:
<ion-text myCustomDirective>Test Text</ion-text>
И реализация директивы выглядит следующим образом:
import { Directive, ElementRef, OnInit } from '@angular/core';
@Directive({
selector: '[myCustomDirective]'
})
export class MyCustomDirective implements OnInit {
private element: any;
constructor(
private elementRef: ElementRef
) { }
ngOnInit() {
this.element = this.elementRef.nativeElement;
console.log("Element width: " + this.element.offsetWidth) //The width here is always equal to 0
}
}
Я пробовал с разными методами и атрибутами, такими как clientWidth
, getComputedStyle(this.element)['width']
, но я всегда получаю 0
.
Я думаю, что проблема в том, что элемент еще не отображается в хуке onInit
, и я не могу придумать способ получить ширину из другого хука / метода.
Поскольку мой элементion-text
не запускает никаких событий, я не могу ни использовать HostListener
, где я могу получить ширину после инициализации моего элемента.
У вас есть какие-либо предложения?
Спасибо!
РЕДАКТИРОВАТЬ
Даже при попытке с крюком ngAfterViewInit()
ширина 0
:
ngAfterViewInit(): void {
console.log("Element width: " + this.elementRef.nativeElement.offsetWidth); // returns 0
}