Мне нужно динамически изменять высоту моей handsontable в моем угловом компоненте, но при этом выдается ошибка ExpressionChangedAfterItHasBeenCheckedError, когда я запускаю свои модульные тесты.Как я могу установить высоту, не получая эту ошибку?
Я использую угловой 6 и жасмин.Мне нужно, чтобы высота handsontable была оценена динамически, потому что я динамически добавляю и удаляю компоненты из своего родительского компонента.Я не получаю сообщение об ошибке для свойства ширины, хотя я оцениваю его таким же образом.
<div>
<hot-table
hotId="searchResultsTableId"
[width]="getTableWidth()"
[height]="getTableHeight()"
[data]="data"
>
</hot-table>
</div>
И в файле машинописи моего компонента:
getTableHeight(): number {
const style = window.getComputedStyle(this.element, 'height')
const containerHeight = Number(style['height'].split('p')[0])
return containerHeight - 120
}
getTableWidth(): number {
const style = window.getComputedStyle(this.element, 'width')
const containerWidth = Number(style['width'].split('p')[0])
return containerWidth - 50
}
Мой файл спецификаций выглядит так:
describe('SearchResultsComponent', () => {
let component: SearchResultsComponent
let fixture: ComponentFixture<SearchResultsComponent>
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [SearchResultsComponent],
imports: [
HotTableModule.forRoot(),
],
providers: [
{ provide: SearchService, useClass: MockSearchService },
]
}).compileComponents()
fixture = TestBed.createComponent(SearchResultsComponent)
component = fixture.debugElement.componentInstance
fixture.detectChanges()
})
describe('processResults', () => {
it('should pass the test', () => {
expect(true).toEqual(true)
})
})
})
Я получаю сообщение об ошибке "Ошибка: ExpressionChangedAfterItHasBeenCheckedError: Выражение изменилось после того, как оно было проверено. Предыдущее значение:" высота: -101 ". Текущее значение:" высота: -43.734399999999994 "" во время работы моегоtest, и это появилось только после привязки к свойству height следующим образом.Я ожидаю, что тест пройдет без этой ошибки.