angular操作DOM中的滚动条 自动滚动到底部

一般情况下我们angular项目中很少对DOM进行操作的,但偶尔根据需求也会对元素进行操作;下面看看在angular中如何获取DOM元素内容。

场景:模拟一个聊天窗口,发送信息后,滚动条自动滑动到最底部(如图所示)。

我们就可以借助angular中ElementRef类进行DOM操作。
angular操作DOM中的滚动条 自动滚动到底部_第1张图片
angular操作DOM中的滚动条 自动滚动到底部_第2张图片
每次添加元素后到滚动条底部!
根据UI设计显示,信息内容布局元素高度是固定的,如果内容溢出,则显示滚动条,自动滑动到底部(也就是最新消息位置)。

具体方法,我们在组件中导入“ElementRef”:

import {
      Component, OnInit, AfterViewChecked, ElementRef } from '@angular/core';
constructor(
  private el: ElementRef,
) {
     }

接下来我们可以操作DOM中的元素(加入DOM中元素ID为"content"):

 <!-- 内容 -->
 <div *ngFor="let item of paragraphs; let i = index" class="editor-paragraph">
 </div>

this.el.nativeElement.querySelector(’.editor-html’)
这样和js中操作基本一样,即可获取你想要的。

按照本示例,我们还需要用到ngAfterViewChecked(每次做完组件视图和子视图的变更检测之后调用)就是组件生命周期中AfterViewChecked接口中的方法。

选择布局包裹,然后将卷去高度赋等于包裹实际高度即可将滚动条置于最底部,定义此方法分别在ngAfterViewChecked()与ngOnInit()中执行即可实现与上图所示。

export class ProductReleaseProductComponent implements OnInit, AfterViewInit, AfterViewChecked {
     
// 详情内容置底
  ngAfterViewChecked(): void {
     
    const editorhtml = this.elf.nativeElement.querySelector('.editor-html');
    editorhtml.scrollTop = editorhtml.scrollHeight;
  }

你可能感兴趣的:(angular,css,前端,angular)