Мы получили следующее решение: пришлось добавить директиву , в которой используется метод NgOnChanges (поскольку проблема возникает не только при загрузке страницы, но и при программном изменении содержимого). Таким образом, при изменении действия стиль отображения меняется на «none», затем после тайм-аута показывается элемент.
Директива:
import { Directive, Input, OnChanges, SimpleChange, ElementRef } from "@angular/core";
@Directive({
selector: '[p-editor-model]'
})
export class PeAutoscrollFixDirective implements OnChanges {
@Input("p-editor-model") content: string;
ngOnChanges(changes: { [property: string]: SimpleChange }) {
let change = changes["content"];
let elemPosition = this.element.nativeElement.getBoundingClientRect().top + document.body.scrollTop;
let clientHeight = document.documentElement.clientHeight;
if (change.isFirstChange() || elemPosition > clientHeight)
{
this.element.nativeElement.style.display = 'none';
setTimeout(() => {
this.element.nativeElement.style.display = '';
});
}
}
constructor(private element: ElementRef) {
}
}
Необходимо добавить эту директиву в модуль как декларации и экспорт.
И использование этой директивы выглядит следующим образом:
<p-editor [p-editor-model]="model" [(ngModel)]="model"></p-editor>