Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)


Posted in Javascript onMay 26, 2020

1. TinyMCE简介

TinyMCE是一个轻量级的富文本编辑器,相对于CK编辑器更加精简,但必须满足绝大部分场景的需要。

2.安装和配置TinyMCE

2.1安装TinyMCE

npm install-保存tinymce

2.2设置tinymce局部访问(.angular-cli.json)

"scripts": [
  "../node_modules/_tinymce@4.7.4/tinymce.js",
  "../node_modules/_tinymce@4.7.4/themes/modern/theme.js",
  "../node_modules/_tinymce@4.7.4/plugins/link/plugin.js",
  "../node_modules/_tinymce@4.7.4/plugins/paste/plugin.js",
  "../node_modules/_tinymce@4.7.4/plugins/table/plugin.js"
 ],

2.3定义变量

在项目中的typing.d.ts中

声明tinymce

变量,不然会提示发现tinymce

声明var tinymce:任何;

2.4拷贝皮肤文件到资产目录下

Linux和MacOS

cp -r node_modules / tinymce / skins src / assets / skins

2.5安装中文支持

中文语言包可以从这个地址下载:

https://www.tinymce.com/downl ...

下载下来的压缩文件中会有一个langs目录,里面有zh_CN.js,把这个目录复制到src / assets目录下,然后在上下中添加引用(.angular-cli.json):

“ scripts”:[

"../node_modules/_tinymce@4.7.4/tinymce.js",
 "../node_modules/_tinymce@4.7.4/themes/modern/theme.js",
 "../node_modules/_tinymce@4.7.4/plugins/link/plugin.js",
 "../node_modules/_tinymce@4.7.4/plugins/paste/plugin.js",
 "../node_modules/_tinymce@4.7.4/plugins/table/plugin.js",
 "../src/assets/langs/zh_CN.js"复制代码
],

3.创建TinyMCE组件

ng gc myeditor

import {
 Component,
 AfterViewInit,
 EventEmitter,
 OnDestroy,
 Input,
 Output
} from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
 selector: 'tiny-editor',
 templateUrl: './tiny-editor.component.html',
 styleUrls: ['./tiny-editor.component.css']
})
export class TinyEditorComponent implements AfterViewInit, OnDestroy {
 @Input() elementId: String;
 @Output() onEditorContentChange = new EventEmitter();

 editor;

 constructor() { }

 ngAfterViewInit() {
  let self = this;
  tinymce.init({
   selector: '#' + this.elementId,
   height: 600,
   plugins: ['link', 'table', 'image'],
   skin_url: 'assets/skins/lightgray',
   setup: editor => {
    this.editor = editor;
    editor.on('keyup change', () => {
     const content = editor.getContent();
     this.onEditorContentChange.emit(content);
    });
   }
  });
 }

 ngOnDestroy() {
  tinymce.remove(this.editor);
 }

}
// tiny-editor.component.html
<textarea id="{{elementId}}">
</textarea>

4.使用自定义TinyMCE组件

<tiny-editor [elementId]="'defined-tinymce-editor'">
</tiny-editor>

5.增加图片上传功能

import {
 Component,
 AfterViewInit,
 EventEmitter,
 OnDestroy,
 Input,
 Output
} from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
 selector: 'tiny-editor',
 templateUrl: './tiny-editor.component.html',
 styleUrls: ['./tiny-editor.component.css']
})
export class TinyEditorComponent implements AfterViewInit, OnDestroy {
 @Input() elementId: String;
 @Output() onEditorContentChange = new EventEmitter();
 editor;
 constructor(private http: HttpClient) { }
 ngAfterViewInit() {
  let self = this;
  tinymce.init({
   selector: '#' + this.elementId,
   height: 600,
   plugins: ['link', 'table', 'image'],
   skin_url: 'assets/skins/lightgray',
   setup: editor => {
    this.editor = editor;
    editor.on('keyup change', () => {
     const content = editor.getContent();
     this.onEditorContentChange.emit(content);
    });
   },
   // 图片上传功能
   images_upload_handler: function(blobInfo, success, failure) {
    var formData;
    formData = new FormData();
    console.log(blobInfo);
    formData.append("file", blobInfo.blob(), blobInfo.filename());
    console.log(formData);
    self.uploadFile('http://www.seenode.com/index/player/upload', formData).subscribe( response => {
     let url = response['data']['imagePath'];
     success(url);
    });
   }
  });
 }
 // 上传图片
 private uploadFile(url: string, formData: any) {
  var self = this;
  var headers = new HttpHeaders();
  headers.set("Accept", "application/json");
  return self.http.post(url, formData, { headers: headers });
 }

 ngOnDestroy() {
  tinymce.remove(this.editor);
 }
}

6.获取和设置编辑器内容

<tiny-editor 
 [elementId]="'defined-tinymce-editor'"
 (onEditorContentChange)="keyupHandler($event)"></tiny-editor>复制代码
// 监听onEditorKeyup事件
private keyupHandler(event) {
 console.log('编辑器的内容:', event);
}

总结

到此这篇关于Angular5整合富文本编辑器TinyMCE(汉化+上传)的文章就介绍到这了,更多相关Angular5整合富文本编辑器TinyMCE(汉化+上传)内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
浏览器常用高宽的jquery插件
Feb 24 Javascript
js判断变量是否未定义的代码
Mar 28 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
Sep 21 Javascript
jquery easyui combobox模糊过滤(示例代码)
Nov 30 Javascript
Juery解决tablesorter中文排序和字符范围的方法
May 06 Javascript
js生成随机数的方法实例
Oct 16 Javascript
轻松实现javascript图片轮播特效
Jan 13 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
小程序跨页面交互的作用与方法详解
Jan 07 Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 Javascript
js校验开始时间和结束时间
May 26 #Javascript
vue实现简单跑马灯效果
May 25 #Javascript
Js和VUE实现跑马灯效果
May 25 #Javascript
Vue实现简单的跑马灯
May 25 #Javascript
Vue实现跑马灯效果
May 25 #Javascript
JavaScript实现移动端弹窗后禁止滚动
May 25 #Javascript
ES2020 已定稿,真实场景案例分析
May 25 #Javascript
You might like
php采集时被封ip的解决方法
2010/08/29 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
php中出现空白页的原因及解决方法汇总
2014/07/08 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
python3下pygame如何实现显示中文
2020/01/11 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
我未来的职业规划范文
2014/01/11 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
安全承诺书范文
2014/03/26 职场文书
办理收楼委托书范本
2014/10/09 职场文书
干部考核工作总结2015
2015/07/24 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python