Я пытаюсь дать директиву ссылку на ее элемент, но не могу передать ее в конструкторе. Что действительно странно, так это то, что у меня есть другая директива в том же проекте, что действительно получает ссылку на его элемент через конструктор.
Вот куча разных вещей, которые я пробовал:
во-первых, тот, который работает с другой директивой в другом месте проекта:
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 () { }
}
компилируется нормально.
Почему это сломано? Почему это работает в другом месте?