前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【指令篇】ionic3自适应大小textarea指令

【指令篇】ionic3自适应大小textarea指令

作者头像
IT晴天
发布2018-08-20 10:31:07
2900
发布2018-08-20 10:31:07
举报
文章被收录于专栏:ionic3+ionic3+

这指令不是我发明的,国外看到的,找个地方记录一下。关于指令的一些简单说明,可以看我这篇文章:【开发指南】(五)ionic3应该善用组件和指令

假如对指令有所了解了,那首先创建一个指令:

ionic g directive autosize

打开文件编辑:

import { Directive, ElementRef, HostListener } from '@angular/core';

@Directive({
  selector: '[autosize]' // Attribute selector
})
export class AutosizeDirective {

  @HostListener('input', ['$event.target'])
  onInput(textArea:HTMLTextAreaElement):void {
    this.adjust();
  }

  constructor(public element:ElementRef) {
    console.log('Hello AutosizeDirective Directive');
  }

  ngOnInit():void {
    setTimeout(() => this.adjust(), 0);
  }

  adjust():void {
    const textArea = this.element.nativeElement.getElementsByTagName('textarea')[0];
    textArea.style.overflow = 'hidden';
    textArea.style.height = 'auto';
    textArea.style.height = textArea.scrollHeight + 'px';
  }
}

然后随便找个html页面,加上下面这些内容测试看下效果,效果图我就不上了:

  <ion-item>
    <ion-textarea name="dummyText" [(ngModel)]="dummyText" autosize></ion-textarea>
  </ion-item>

原理就是监听input事件,每次输入后执行adjust方法调整样式。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.10.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档