typescript - angular2 scroll to bottom (chat style) -
i have set of single cell components within ng-for loop. have in place cannot seem figure out proper
currently have a
settimeout(() => { scrolltobottom(); });
but doesn't work time images asynchronously push viewport down.
whats appropriate way scroll bottom of chat window in angular2?
i had same problem, i'm using afterviewchecked
, @viewchild
combination (angular2 beta.3).
the component:
import {..., afterviewchecked, elementref, viewchild, oninit} 'angular2/core' @component({ ... }) export class channelcomponent implements oninit, afterviewchecked { @viewchild('scrollme') private myscrollcontainer: elementref; ngoninit() { this.scrolltobottom(); } ngafterviewchecked() { this.scrolltobottom(); } scrolltobottom(): void { try { this.myscrollcontainer.nativeelement.scrolltop = this.myscrollcontainer.nativeelement.scrollheight; } catch(err) { } } }
the template:
<div #scrollme style="overflow: scroll; height: xyz;"> <div class="..." *ngfor="..." ...> </div> </div>
of course pretty basic. afterviewchecked
triggers every time view checked:
implement interface notified after every check of component's view.
if have input-field sending messages instance event fired after each keyup (just give example). if save whether user scrolled manually , skip scrolltobottom()
should fine.
Comments
Post a Comment