Свойство 'element' не существует для типа 'Directive'.ts - PullRequest
0 голосов
/ 18 февраля 2019

Я сталкиваюсь с ошибкой, свойство 'element' не существует в 'директиве'.Здесь я пытаюсь создать функциональность директив.

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

@Directive({
  selector: '[Directive]'
})
export class Directive{

  constructor(element: ElementRef) {
    element.nativeElement.style.backgroundColor = 'brown';
    element.nativeElement.style.fontSize = '38px';
  }

  @HostListener('mouseenter') onmouseenter() {
    this.highlight('red');
  }
  @HostListener('mouseleave') onmouseleave() {
    this.highlight('yellow');
  }

  private highlight(color: string) {
    this.element.nativeElement.style.backgroundColor = color;
  }

}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Имя класса должно отличаться от Directive

export class CustomDirective{ }

, и во время инициализации в конструкторе необходимо указать такие модификаторы доступа, как public, private и т. Д., Чтобыиспользуйте их в любом методе этого класса.

0 голосов
/ 18 февраля 2019

Ваш параметр конструктора доступен только внутри конструктора, вам нужно добавить одно из следующих ключевых слов модификаторов доступа: private, protected, public или readonly, чтобы сделать его полем класса:

constructor(readonly element: ElementRef) {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...