Не удается передать свойства в конструктор угловой директивы - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь дать директиву ссылку на ее элемент, но не могу передать ее в конструкторе. Что действительно странно, так это то, что у меня есть другая директива в том же проекте, что действительно получает ссылку на его элемент через конструктор.

Вот куча разных вещей, которые я пробовал:

во-первых, тот, который работает с другой директивой в другом месте проекта:

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

@Directive({
  selector: 'dialog[openable]'
})
export class OpenableDirective {
  constructor (private readonly element: ElementRef) { }
}

хорошо, может быть, это не может быть прочитано только:

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

@Directive({
  selector: 'dialog[openable]'
})
export class OpenableDirective {
  constructor (private element: ElementRef) { }
}

давайте попробуем public:

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

@Directive({
  selector: 'dialog[openable]'
})
export class OpenableDirective {
  constructor (public element: ElementRef) { }
}

хорошо, как насчет того, чтобы делать это глупо:

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

@Directive({
  selector: 'dialog[openable]'
})
export class OpenableDirective {
  private element: ElementRef;
  constructor (e: ElementRef) {
    this.element = e;
  }
}

Все они не компилируются с одним и тем же сообщением об ошибке:

ERROR in /path/to/src/app/directives/openable.directive.spec.ts
[tsl] ERROR in /path/to/src/app/directives/openable.directive.spec.ts(5,23)
      TS2554: Expected 1 arguments, but got 0.
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! my-app@0.0.1 autonomous:build: `npm run build:client-and-server-bundles && webpack --config webpack.server.config.js --no-progress --no-colors`
npm ERR! Exit status 2

конечно, вы заметите, что строка 5 не только не имеет 23 столбцов, но и не является источником ошибки. Я знаю это, потому что этот код:

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

@Directive({
  selector: 'dialog[openable]'
})
export class OpenableDirective {
  constructor () { }
}

компилируется нормально.

Почему это сломано? Почему это работает в другом месте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...