Я хочу создать подобный чату компонент с «бесконечной» прокруткой, чтобы изначально пользователь просто видел последние сообщения, а при прокрутке вверх - новые сообщения загружались, а пользователь мог видеть «старые» сообщения.
Я работаю с Angular 7 и пытался реализовать его с тремя различными компонентами (пропреитарием, прокруткой данных Prime NG с несколькими изменениями [инвертировано] и компонентом Infinite Scroll), но я продолжаю сталкиваться с одной и той же проблемой:
Когда новые сообщения добавляются в конец списка - все работает нормально, но когда я пытаюсь добавить сообщения в начале списка, это не работает, если я использую мышь для прокрутки вверх .
Если я использую клавиатуру - новые сообщения добавляются и позиция scrollTop сохраняется относительно. Но если я использую мышь для прокрутки вверх (перетаскивание мышью), позиция ABSOLUTE scrollTop сохраняется, и пользователь теряет отслеживание сообщений.
Пример:
Если исходным подмножеством были сообщения 36-45, а пользователь прокручивает до сообщения 36, я хотел бы загрузить еще 10 сообщений (26-35), но сохранить позицию прокрутки в сообщении 36 (для удобства). Если я прокручиваю вверх с помощью клавиатуры, это именно то, что происходит, но если я прокручиваю вверх с помощью мыши, абсолютное значение scrollTop сохраняется и список «переходит» к сообщению 26.
Я могу установить scrollTop с помощью кода, но когда прокрутка продолжается, позиция «возвращается» к предыдущему значению scrollTop.
Есть идеи, почему это происходит? Как я могу это исправить?