Angular封装WangEditor富文本组件的方法

 更新时间:2021年07月30日 09:15:37   作者:青城同学的博客  
这篇文章主要介绍了Angular封装WangEditor富文本组件,得益于Angular的强大,封装WangEditor组件非常简单,需要的朋友可以参考下

富文本组件是web程序中很常用的一个组件,特别是要开发一个博客,论坛这类的网站后台。

得益于Angular的强大,封装WangEditor组件非常简单

1.使用yarn或者npm安装wangeditor

yarn add wangeditor

2.创建一个Angular的组件

ng g c q-wang-editor

3.封装组件逻辑

3.1 模板

<div #wang></div>

3.2 ts逻辑

import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';

import E from "wangeditor"
import hljs from 'highlight.js'
import "node_modules/highlight.js/styles/xcode.css"

@Component({
  selector: 'q-wang-editor',
  templateUrl: './q-wang-editor.component.html',
  styleUrls: [
    './q-wang-editor.component.less',
    '../../../../../node_modules/highlight.js/styles/xcode.css'],
  encapsulation: ViewEncapsulation.None,
})
export class QWangEditorComponent implements OnInit, ControlValueAccessor,OnDestroy {

  @ViewChild("wang")
  editor!: ElementRef;

  @Input() value: string = '';

  @Input() height = 300;

  @Output() valueChange = new EventEmitter();

  onChange: ((value: string) => {}) | undefined;

  html = ''

  wangEditor: E | undefined;

  constructor() { }
  ngOnDestroy(): void {
    this.wangEditor?.destroy();
  }
  writeValue(obj: any): void {
    this.html = obj;
    this.wangEditor?.txt.html(this.html)
  }
  registerOnChange(fn: any): void {
  }
  registerOnTouched(fn: any): void {
  }

  ngOnInit(): void {
    setTimeout(() => {
      this.wangEditor = new E(this.editor.nativeElement)
      this.wangEditor.config.zIndex = 500;
      this.wangEditor.config.height = this.height
      this.wangEditor.highlight = hljs;
      this.wangEditor.config.onchange = (html: any) => {
        this.valueChange.emit(html)
        if (this.onChange) {
          this.onChange(html);
        }
      }
      this.wangEditor.config.onchangeTimeout = 500;
      this.wangEditor.create();
      this.wangEditor.txt.html(this.html)
    }, 200);
  }

}

大致思路:

  • 使用ViewChild引用html的dom元素
  • 在OnInit的成功后,初始化WangEditor编辑器,把模板中的ElementRef放入到WangEditor的容器中去,让WangEditor去控制界面的dom操作。
  • 实现ControlValueAccessor,让这个组件支持Angular的表单验证。
  • 实现ngOnDestroy,组件在销毁的时候,调用WangEditor的destory

4.使用组件

<q-wang-editor [height]="550"></q-wang-editor> 

5.效果预览

6.最后

一个WangEditor的Angular组件封装就基本完成了。如果需要更多功能,比如图片上传,等可以再根据自己的需求增加功能即可

到此这篇关于Angular封装WangEditor富文本组件的文章就介绍到这了,更多相关Angular WangEditor富文本组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Angular.js组件之input mask对input输入进行格式化详解

    Angular.js组件之input mask对input输入进行格式化详解

    这篇文章主要给大家介绍了关于Angular.js组件之input mask对input输入进行格式化的相关内容,文中通过示例代码详细介绍了将银行卡号和日期的方法,需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • Angular2实现的秒表及改良版示例

    Angular2实现的秒表及改良版示例

    这篇文章主要介绍了Angular2实现的秒表及改良版,结合实例形式分析 Angular2实现秒表功能的原理、操作技巧与相关注意事项,需要的朋友可以参考下
    2019-05-05
  • AngularJs IE Compatibility 兼容老版本IE

    AngularJs IE Compatibility 兼容老版本IE

    本文主要介绍AngularJs IE Compatibility 兼容老版本IE的问题及解决办法,有兴趣的小伙伴可以参考下
    2016-09-09
  • Angularjs之如何在跨域请求中传输Cookie的方法

    Angularjs之如何在跨域请求中传输Cookie的方法

    跨域传输Cookie是需要后台和前台同时做相关处理才能解决的,这篇文章主要介绍了Angularjs之如何在跨域请求中传输Cookie的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • AngularJs基本特性解析(一)

    AngularJs基本特性解析(一)

    angularjs是javascript的一个框架,通过script标签添加到网页中。这篇文章主要介绍了AngularJs基本特性解析(一)的相关资料,需要的朋友可以参考下
    2016-07-07
  • 详解@angular/cli 改变默认启动端口两种方式

    详解@angular/cli 改变默认启动端口两种方式

    这篇文章主要介绍了详解@angular/cli 改变默认启动端口两种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 一篇文章快速了解Angular和Ionic生命周期和钩子函数

    一篇文章快速了解Angular和Ionic生命周期和钩子函数

    Ionic以AngularJS和ApacheCordova为基础,使用Node.js进行模块管理,使用Html5、Css(SASS)和Javascript技术进行APP开发,这篇文章主要给大家介绍了如何通过一篇文章快速了解Angular和Ionic生命周期和钩子函数的相关资料,需要的朋友可以参考下
    2021-07-07
  • Angular 4.X开发实践中的踩坑小结

    Angular 4.X开发实践中的踩坑小结

    这篇文章主要给大家介绍了关于Angular 4.X开发实践中的一些踩坑经验,文中主要介绍的是使用ngIf或者ngSwitch出错以及多级依赖注入器的相关内容,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • Angular4学习之Angular CLI的安装与使用教程

    Angular4学习之Angular CLI的安装与使用教程

    网上很多教程过时,命令在angular4中不适用等等,所以下面这篇文章主要给大家介绍了关于Angular4学习之Angular CLI的安装与使用教程的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-01-01
  • 详解Angular系列之变化检测(Change Detection)

    详解Angular系列之变化检测(Change Detection)

    这篇文章主要介绍了详解Angular系列之变化检测(Change Detection),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02

最新评论