Хорошо, я пробую кое-что уже около 2 недель и, кажется, не могу найти здесь решение моей проблемы. По сути, то, что я пытаюсь исправить, находится в окне чата моего сайта angular. Пользователь может опубликовать сообщение, и после публикации сообщения окно чата должно прокрутить элемент чата вниз, чтобы было видно новое сообщение.
Проблема в том, что пока я могу заставить его прокручиваться , Я не могу заставить его прокрутить мимо нового сообщения, и в лучшем случае он прокручивается до предпоследнего сообщения, как будто он не понимает, что для прокрутки необходим новый элемент.
Вещь, которую я пробовал: я попробовал ngAfterViewInit для решения, хотя проблема здесь заключается в том, что я использую материальный дизайн для кнопок, и простая прокрутка кнопок с всплывающими подсказками в компоненте вызывает это срабатывание, заставляя прокрутку вниз в нежелательные моменты. Я пробовал ngOnChanges, который распознает изменение сообщений, хотя даже думал, что он может его распознать, установив logi c для распознавания этого изменения, все равно не заставляет окно проходить предпоследнее сообщение
Что касается кода , это синтаксис, который отправляет новое сообщение, которое вызывает метод в компоненте viewchild (являющемся окном чата) для прокрутки вниз ПОСЛЕ публикации сообщения.
public async send(messageResponse: MessageApiResponse)
{
this.postingMessage = true;
await this.SantaApiPost.postMessage(messageResponse).toPromise();
await this.profileService.getSelectedHistory(this.profile.clientID, this.selectedHistory.relationXrefID, true);
this.chatComponent.scrollToBottom();
this.postingMessage = false;
}
метод в дочернем элементе, который он вызывает, только для справки
public scrollToBottom(): void {
try {
this.chatFrame.nativeElement.scrollTop = this.chatFrame.nativeElement.scrollHeight;
} catch(err) { }
}
Публикация отправляет сообщение, а следующая строка обновляет историю чата, которая сама по себе является обещанием, а не подпиской, поэтому ничего не должно быть быть там не в порядке. Как только это будет сделано, он должен прокрутить чат от наблюдающего ребенка, но он не делает этого полностью, и я не могу понять, что я делаю здесь не так, или как это можно исправить. Демонстрация неисправной функциональности