ionic 2 + angular 2 : auto scroll to bottom of list / page / chat

后端 未结 9 1490
误落风尘
误落风尘 2021-02-13 12:42

I\'m trying to code a page with two segments \"chat\" and \"content\". I want that one \"chat\" segment the page auto-scroll to the bottom with no effect. The chat is a &l

9条回答
  •  梦如初夏
    2021-02-13 13:19

    Here's how I did it:

    chatPage.html

    
    
      
        
          
        
      
    
    
    

    The important bit in chatPage.html is #content on . I'll use the #content identifier to obtain a reference to in my chatPage.js using the ViewChild.

    Now for the actual scrolling logic:

    chatPage.js

    import {Component, ViewChild} from '@angular/core';
    
    @Component({
      templateUrl: 'build/pages/chatPage/chatPage.html',
      queries: {
        content: new ViewChild('content')
      }
    })
    export class ChatPage {
      constructor() { 
    
      }
    
      //scrolls to bottom whenever the page has loaded
      ionViewDidEnter(){
        this.content.scrollToBottom(300);//300ms animation speed
      }
    }
    

    Also, whenever my chatPage needs to show another chat message in the list (either a new message is received, or a new message is sent), I'm using the below code to scroll to the new bottom:

    setTimeout(() => {
      this.content.scrollToBottom(300);//300ms animation speed
    });
    

    Update for Typescript

    Back when I gave this answer I was working with JavaScript version of Ionic 2 project. Over time I switched to TypeScript but I forgot to update the answer, so, here's a small update for chatPage.js(ts):

    chatPage.ts

    import {Component, ViewChild} from '@angular/core';
    
    @Component({
      templateUrl: 'chatPage.html'
    })
    export class ChatPage {
      @ViewChild('content') content:any;
    
      constructor() { }
    
      //scrolls to bottom whenever the page has loaded
      ionViewDidEnter(){
        this.content.scrollToBottom(300);//300ms animation speed
      }
    }
    

提交回复
热议问题