Я создаю директиву автофокуса для ввода моего шаблона следующим образом:

 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]:

0
Pelodido3 29 Мар 2020 в 21:10

1 ответ

Для первой проблемы:

При создании экземпляра class, как вы это сделали, вы должны передать все необязательные параметры. Чтобы правильно протестировать directive, я рекомендую вам взглянуть на Руководство по тестированию директивы атрибутов.

Для второй проблемы:

Вероятно, вы забыли добавить AutofocusDirective в @NgModule#declarations.

Рабочая демонстрация

0
developer033 29 Мар 2020 в 23:15