Угловой крепеж debugElement NULL - PullRequest
1 голос
/ 12 октября 2019

Во время выполнения debugElement.query я получаю Cannot read property 'nativeElement' of null.

Мой HTML-код:

    <mat-form-field appearance="standard" id="my-searchBox">
      <input matInput [formControl]="filterBox"              
            id="filterBox-input">
    </mat-form-field>

    <div class="mat-table-elevated-wrapper mat-elevation-z4">
        <table mat-table [dataSource]="dataSource">
            <ng-container matColumnDef="name">
                <th class="table-header" mat-header-cell *matHeaderCellDef>
                  <mat-form-field appearance="standard">
                    <input matInput [formControl]="nameFilter" id="name-input">
                  </mat-form-field>
                </th>
                <td mat-cell *matCellDef="let elem">
                  elem.name
                </td>
            </ng-container>
        </table>
    </div>

И я добавляю следующий код в модульном тесте:

  beforeEach(() => {
    fixture = TestBed.createComponent(CallLogComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();

    let myList = [];
    let entry = getDummyEntry();
    myList.push(entry);
    component.dataSource = new MatTableDataSource(myList);
    component.dataSource.data = myList;
    fixture.detectChanges();
  });

  it('verify filter changes', () => {

    let filterBoxInput = fixture.debugElement.query(By.css('#filterBox-input'));
    filterBoxInput.nativeElement.value = 'dummy';
    filterBoxInput.nativeElement.dispatchEvent(new Event('input'));
    fixture.detectChanges();
    expect(component.boxValue).toBe('dummy');

    // works till here, issue causes on below line

    let nameInput = fixture.debugElement.query(By.css('#name-input')); --> null
    nameInput.nativeElement.value = 'dummyName';
    nameInput.nativeElement.dispatchEvent(new Event('input'));
    fixture.detectChanges();
    expect(component.name).toBe('dummyName');
  });

Затем я получаю ошибку для nameInput:

TypeError: Невозможно прочитать свойство 'nativeElement' с нулевым значением

Я также добавляю некоторые фиктивные данныек матовой таблице источника данных. По-прежнему возникает проблема для nameInput.

Что может быть причиной проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...