TypeError после обновления до Angular6 в функции, связанной с nativeElement.setAttribute в компоненте - PullRequest
0 голосов
/ 02 июля 2018

вопрос!

У меня есть компонент панели поиска, в котором поле поиска используется как поле textarea. В зависимости от количества искомого текста, я увеличиваю или уменьшаю количество строк самой текстовой области. Итак, у меня есть некоторые операции, которые имеют дело с нативным элементом textarea. Например, эта функция

searchbar.ts

focus() {
  if (this.textArea) {
    this.focussed = true;
    this.textArea.nativeElement.setAttribute('rows', this.calcRows());

    // extra part ...
  }
}

searcbar.spec.ts

describe('focus', () => {
  it('should set focussed to true', () => {
    component.focussed = false;
    component.focus();
    expect(component.focussed).toBe(true);
  });

  it('should set the height of the textArea by setting the row to the correct amount', () => {
    spyOn(component.textArea.nativeElement, 'setAttribute');
    spyOn(component, 'calcRows').and.returnValue(2);

    component.focus();
    expect(component.textArea.nativeElement.setAttribute).toHaveBeenCalledWith('rows', 2);
  });
});

Тесты на самом деле не проваливаются. Но я отображаю эту ошибку, и считается, что они относятся не к самому тесту, а к компоненту.

ОШИБКА: 'ОШИБКА', Ошибка типа: undefined не является функцией (оценка 'this.textArea.nativeElement.setAttribute (' строк, this.calcRows ()) ')

Есть идеи как это исправить? Заранее спасибо

1 Ответ

0 голосов
/ 02 июля 2018

попробуй this.textArea.nativeElement.rows = this.calcRows()

...