angular兄弟组件调用方法(Angular封装WangEditor富文本组件的方法)
类别:编程学习 浏览量:2612
时间:2021-10-02 01:44:43 angular兄弟组件调用方法
Angular封装WangEditor富文本组件的方法富文本组件是web程序中很常用的一个组件,特别是要开发一个博客,论坛这类的网站后台。
得益于Angular的强大,封装WangEditor组件非常简单
1.使用yarn或者npm安装wangeditor
yarn add wangeditor
2.创建一个Angular的组件
ng g c q-wang-editor
3.封装组件逻辑
3.1 模板
<li #wang></li>
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路由树(详解Angular路由之子路由)
- angular开发详解(详解Angular组件生命周期一)
- angularjs过滤器
- vue react和angular(详解React Angular Vue三大前端技术)
- angular怎么把组件用在根组件里(详解Angular组件之投影)
- angular兄弟组件调用方法(Angular封装WangEditor富文本组件的方法)
- angular教程第九讲(浅谈Angular的12个经典问题)
- angularjs数据绑定类指令及作用(详解Angular数据绑定及其实现方式)
- angular怎么创建声明(使用Angular CDK实现一个Service弹出Toast组件功能)
- angularjs使用指令(详解Angular路由动画及高阶动画函数)
- angular封装公共组件(详解Angular组件之生命周期二)
- angular定义一个管道(Angular管道PIPE的介绍与使用方法)
- angular简单介绍(详解Angular依赖注入)
- angular快速创建模块指令(详解Angular项目中共享模块的实现)
- angular封装进度条组件(如何用DevUI搭建自己的Angular组件库)
- angular 常用模块(详解Angular之路由基础)
- 杭州旅游攻略()
- 云南旅游攻略(云南旅游攻略5天攻略)
- 收藏 春节假期,这些景区巨划算(收藏春节假期这些景区巨划算)
- 景区游玩,这些安全知识要牢记(这些安全知识要牢记)
- 各地出招烘 热 旅游(各地出招烘热旅游)
- 2021款起亚霸锐到店了 更换车标,竞争宝马X5有戏吗(2021款起亚霸锐到店了)
热门推荐
- dedecms频道封面不能修改内容(dedecms按栏目名首字母/数字排序输出的实现方法)
- vue项目上线教程(vue项目中使用骨架屏的方法)
- css自动布局(CSS自适应布局思路)
- php 常见的三种缓存(PHP进阶学习之垃圾回收机制详解)
- php面向对象怎么用(PHP面向对象程序设计之对象克隆clone和魔术方法__clone用法分析)
- rel=nofollow的作用
- sql server支持两种登录验证方式(远程登陆SQL Server 2014数据库的方法)
- truncate和delete(delete、truncate、drop的区别以及该如何选择)
- css渐变色动画(详解CSS背景渐变图片transtion过渡效果技巧)
- mysql数据恢复时间点(MySQL 基于时间点的快速恢复方案)