Я создаю директиву автофокуса для ввода моего шаблона следующим образом:
import { Directive, ElementRef, AfterContentInit } from '@angular/core';
@Directive({
selector: '[appAutofocus]',
})
export class AutofocusDirective implements AfterContentInit {
constructor(private elementRef: ElementRef) {}
ngAfterContentInit() {
this.elementRef.nativeElement.focus();
}
}
И у меня есть две проблемы: во-первых, мой файл спецификации директивы автофокуса возвращает мне ошибку:
import { AutofocusDirective } from './autofocus.directive';
describe('AutofocusDirective', () => {
it('should create an instance', () => {
const directive = new AutofocusDirective(); //Expected 1 argument and I don't know which
expect(directive).toBeTruthy();
});
});
И вторая ошибка в консоли, после внедрения моей автодирективы в конструктор моего компонента и размещения директивы «автофокус» следующим образом:
<input type="date" class="form-control" id="2-ddf"
formControlName="dtFin"appAutofocus #dtFin>
Моя консоль возвращает мне это сообщение: core.js:7187 ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[TabPensionInvaliditeComponent -> AutofocusDirective]:
1 ответ
Для первой проблемы:
При создании экземпляра class
, как вы это сделали, вы должны передать все необязательные параметры. Чтобы правильно протестировать directive
, я рекомендую вам взглянуть на Руководство по тестированию директивы атрибутов.
Для второй проблемы:
Вероятно, вы забыли добавить AutofocusDirective
в @NgModule#declarations
.
Похожие вопросы
Новые вопросы
angular
Вопросы об Angular (не путать с AngularJS), веб-фреймворке от Google. Используйте этот тег для вопросов Angular, которые не относятся к отдельной версии. Для более старой веб-инфраструктуры AngularJS (1.x) используйте тег AngularJS.