一.使用

快速使用富文本,上手很迅速.

tinymce-angular把tinymce分装成angular的一个组件,安装引入后,添加一个editor标签就能使用,如下

1.1 安装与引入

npm install @tinymce/tinymce-angular

在你对应的module里面引用

import { EditorModule } from '@tinymce/tinymce-angular';

@NgModule({

declarations: [AppComponent ],

imports: [

BrowserModule,

EditorModule //

],

providers: [],

bootstrap: [AppComponent]

})

1.2 使用

@Component({

selector: 'app-edit',

template: `

[init]=editParam>

`,

styleUrls: ['./edit.component.scss']

})

export class EditComponent implements {

editParam = {

selector: 'textarea',

// plugins是tinymce的各种插件

plugins: 'link lists image code table colorpicker textcolor wordcount contextmenu codesample',

// 语言包可以使用tinymce提供的网址,但是墙的原因,会连不上,所以还是自行下载,放到assets里面

language_url: '../../../assets/tinymce/langs/zh_CN.js',

language: 'zh_CN',

// toolbar定义快捷栏的操作, | 用来分隔显示

toolbar: 'codesample | bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft'

+ ' aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo '

+ '| link unlink image code | removeformat | h2 h3 h4',

height: 400,

// 这里是代码块的一些语言选择,好像暂时还没支持typescript,所以博文都是js格式

codesample_languages: [

{ text: 'HTML/XML', value: 'markup' },

{ text: 'JavaScript', value: 'javascript' },

{ text: 'CSS', value: 'css' },

{ text: 'Java', value: 'java' }

]

};

}

angular富文本编辑器angular-tinymce的使用就在此了

二.展示页面

在tinymce中编辑的内容展示出来也很方便,这里用使用ngModel就能绑定内容了

因为angular的安全策略,会把innerHTML里面的样式过滤掉,这时候就需要信任下content

三.本地配置tinymce

第一步是使用了tinymce云服务来创建编辑器,很多插件,样式等,都是依赖tinymce上的各种文件,因为云在国外,编辑器加载出来很慢.所以需要把云上的文件配置到本地来

首先,下载tinymce

npm install tinymce

然后在angular.json文件中做下配置引入相应文件

"assets": [

"src/favicon.ico",

"src/assets",

// 新增tinymce中的皮肤和插件文件夹,这种写法参考copy-webpack-plugin

// ng-cli的底层就是webpack

// 这三个分别的皮肤,插件,主题等引用文件夹,初始化的时候可以去控制台看看

{ "glob": "**/*", "input": "./node_modules/tinymce/skins", "output": "/skins/" },

{ "glob": "**/*", "input": "./node_modules/tinymce/plugins", "output": "/plugins/" },

{ "glob": "**/*", "input": "./node_modules/tinymce/themes", "output": "/themes/" }

],

"styles": [

"src/styles.scss",

// prism的样式文件,先忽略

"src/assets/styles/prism.css"

],

"scripts": [

// tinymce基础文件,用来初始化编辑器

"node_modules/tinymce/tinymce.min.js",

// tinymce的codesample的语法高亮用的是prism,代码块回显需要用到,也能用别的高亮插件,此处先忽略

"src/assets/js/prism.js"

]

配置完成,就可以本地初始化tinymce的插件了,aot打包试试,看看打包是否有问题.

四. 图片上传插件和自定义上传方法

要能上传上传图片当然先得需要一个上传图片的接口.

tinymce有个默认的上传方法,我们只需要设置下参数   images_upload_url: uploadUrl 即可.当然默认需要你接口返回的图片地址参数为{location:xxxx}.

当然还有自定义上传的办法,images_upload_handler方法:

editParam = {

selector: 'textarea',

mobile: {

theme: 'silver',

plugins: [ 'autosave', 'lists', 'autolink' ]

},

plugins: `link lists image code table colorpicker fullscreen fullpage help

textcolor wordcount contextmenu codesample importcss media preview print

textpattern tabfocus hr directionality imagetools autosave paste`,

language_url: '../../../assets/tinymce/langs/zh_CN.js',

language: 'zh_CN',

toolbar: 'codesample | bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft'

+ ' aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo '

+ '| link unlink image code | removeformat | h2 h4 | fullscreen preview paste',

height: 700,

codesample_languages: [

{ text: 'JavaScript', value: 'javascript' },

{ text: 'HTML/XML', value: 'markup' },

{ text: 'CSS', value: 'css' },

// { text: 'TypeScript', value: 'typescript' },

{ text: 'Java', value: 'java' }

],

image_caption: true,

// paset 插件允许粘贴图片

paste_data_images: true,

imagetools_toolbar: 'rotateleft rotateright | flipv fliph | editimage imageoptions',

// 这个便是自定义上传图片方法

images_upload_handler: function (blobInfo, success, failure) {

let xhr, formData;

xhr = new XMLHttpRequest();

xhr.withCredentials = false;

xhr.open('POST', '/api/upload');

xhr.onload = function() {

let json;

if (xhr.status !== 200) {

failure('HTTP Error: ' + xhr.status);

return;

}

json = JSON.parse(xhr.responseText);

if (!json || typeof json.location !== 'string') {

failure('Invalid JSON: ' + xhr.responseText);

return;

}

success(json.location);

};

formData = new FormData();

formData.append('file', blobInfo.blob(), blobInfo.filename());

xhr.send(formData);

}

};

这里init的配置多了不少,因为已经把tinymce所有的配置文件都下载下来了,所以我把所有好用的插件都放了上去.加载速度还是很快的.

angular8 富文本编辑_angular富文本编辑器tinymce-angular相关推荐

  1. 富文本编辑器tinymce 自定义中文字号(四号,小四,五号,小五等)

    富文本编辑器tinymce 自定义中文字号(四号,小四,五号,小五等) 前因 探索 最终解决 最终效果 关键代码 前因 在写富文本编辑器转换word的过程中,因为所使用的富文本编辑器tinymce中的 ...

  2. dj鲜生-12-富文本编辑器-tinymce 以及choice选择项目

    下载与安装django-tinymce pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django-tinymce==2.6.0 一, ...

  3. js 免费可靠cdn地址(富文本编辑器tinymce的实践)

    推荐一个 cdn源的可靠源地址(免费且持久) https://www.jsdelivr.com/?query=tinymce 有个富文本编辑的需求,要求导入html字符串去生成富文本htm,使用的是r ...

  4. Vue 自定义富文本编辑器 tinymce 支持导入 word 模板

    自定义富文本编辑器分为前端项目和后端项目两个部分,首先先说一下前端项目 前端 前端项目地址: https://github.com/haoxiaoyong1014/editor-ui 编辑器名称: t ...

  5. 【富文本编辑器功能】vue实现富文本编辑器Tinymce功能,保留编辑器格式文章展示在页面上【前后端代码展示,简单好用】

    前言: 这个Tinymce富文本编辑器是vue-element-admin内集成好的,使用过后体验非常不错,很简单易用.这里分享一下,同时又看到了网上帖子都没什么人写前后端同时展示的,很多人想知道编辑 ...

  6. 富文本编辑器TinyMCE

    最近项目中用到了javascript富文本编辑器,从网上找开源控件,发现很多可选,参考下面文章,列出了很多可用的插件http://www.cnblogs.com/ywqu/archive/2009/1 ...

  7. 富文本编辑器Tinymce超简单使用

    第一步: 1.下载组件 富文本编辑器Tinymce-Javascript文档类资源-CSDN下载 第二步: 1.复制Tinymce进项目的components文件夹中 2.复制tinymce4.7.5 ...

  8. 富文本编辑器tinymce支持从word复制粘贴保留格式和图片的插件powerpaste

    公司做的项目需要用到粘贴Word功能.就是将word内容一键粘贴到网页编辑器(在线富文本编辑器)中.Chrome+IE默认支持粘贴剪切板中的图片,但是我要粘贴的文章存在word里面,图片多达数十张,我 ...

  9. edui 富文本编辑_富文本编辑器wangEditor添加本地上传视频功能

    最近做一个考试系统,编辑题目要用到富文本编辑,要求可以添加图片.视频和pdf.此前项目中用的都是wangEditor,使用的时候发现只可以上传本地图片,视频只能添加链接,找了其他插件,也没发现比较好用 ...

最新文章

  1. How far away ? HDU - 2586
  2. 倒计时 2 天 | 解锁生鲜电商的战“疫”秘密
  3. LeetCode 1170. 比较字符串最小字母出现频次
  4. python输出最大值与最小值求成绩平均值_Python第3次作业
  5. 【spring boot基础知识】java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
  6. linux路由内核实现分析(四)---路由缓存机制(4)
  7. python程序设计方法学_python学习笔记(12)--程序设计方法学
  8. vc++/c++ 汉字取拼音首字母
  9. 深度学习笔记2:关于LSTM神经网络输入输出的理解
  10. LC.740. Delete and Earn
  11. docker服务假死解决方案
  12. 简单工厂和工厂方法模式的区别和个人看法
  13. python实现软件自动点击_鼠标自动点击、键盘自动输入?几行Python代码搞定
  14. WeUI实例(官方)
  15. 用LINQ结合CAML查询 Sharepoint 数据库内容
  16. 煮饭的机器人作文_炒菜机器人作文600字
  17. DGIOT国内首家轻量级物联网开源平台——支持工业设备租赁以及远程管控
  18. buuctf Crypto 异性相吸
  19. 柱纵向钢筋长度计算机械连接,柱钢筋计算公式图解
  20. 贫穷根源的九大死穴(不只是金钱方面)

热门文章

  1. Unity 场景切换间的内存清理
  2. scikit-image图像处理入门
  3. ccf 201612-3 权限查询(100分)
  4. python手写汉字识别_用python实现手写数字识别
  5. 为何中国人比美国德国人更反感拼爹?
  6. unity urp内置lit材质源码解析(下)
  7. 移动端H5页面遇到的问题总结
  8. EV录屏怎么把自己的摄像头放进去,摄像头好的,但是人像很花,看不清人脸
  9. 亚马逊如何创业?身为小白的我适合创业亚马逊吗
  10. 【agc004e】Salvage Robots