Ionic 4 - получение свойства ElementRef в директиве

Мне нужно получить значение ElementRef в директиве для динамического применения класса к элементу.

Моя директива:

import { Directive, ElementRef, Renderer2 } from '@angular/core';

@Directive({
  selector: '[scrolling]'
})

export class ScrollingDirective {

  constructor(public renderer: Renderer2, public el: ElementRef) {
    console.log(this.el);
    console.log(this.el.nativeElement.scrollWidth);
    if (el.nativeElement.scrollWidth > el.nativeElement.clientWidth) {
      this.renderer.addClass(el.nativeElement, 'scrollear');
    }  
  }

}

Затем я назначаю директиву элементу DOM:

<ion-label scrolling>hello world</ion-label>

Проблема в том, что в конструкторе директивы я не могу получить значения элемента, однако с помощью console.log я вижу значения правильно, но не могу их получить.

Мне нужно получить эти значения, но при ссылке на них значение равно 0.

console.log(this.el);


person Diego Roque    schedule 19.02.2020    source источник
comment
У меня работает здесь: stackblitz.com/edit/angular-v6w63v.   -  person developer033    schedule 19.02.2020
comment
точно такой же код, но не работает в моем случае :( Любое предложение?   -  person Diego Roque    schedule 19.02.2020


Ответы (1)


Я думаю, что вы не можете получить значения в конструкторе, потому что он еще не отрендерился. Попробуйте получить к ним доступ в ngAfterViewInit

person Usman Saeed    schedule 19.02.2020
comment
попробуйте это: ngAfterViewInit() { console.log('ngAfterViewInit'); console.log(this.el.nativeElement.clientWidth); } и получаю: ngAfterViewInit 0 :( есть предложения? - person Diego Roque; 19.02.2020