Angular 8 Директива автофокуса - PullRequest
0 голосов
/ 29 марта 2020

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

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

@Directive({
  selector: '[appAutofocus]',
})
export class AutofocusDirective implements AfterContentInit {
  constructor(private elementRef: ElementRef) {}

  ngAfterContentInit() {
    this.elementRef.nativeElement.focus();
  }
}

И у меня две проблемы: во-первых, мой файл директивы автофокуса spe c возвращает мне ошибку:

   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 Ошибка: ошибка: невыполненная (в обещании): NullInjectorError: StaticInjectorError (AppModule) [TabPensionInvaliditeComponent -> AutofocusDirective]:

1 Ответ

0 голосов
/ 29 марта 2020

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

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

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

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

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

...