发表于: 2017-06-15 20:32:53
2 1150
2017-06-15 Day086
今天完成的事情
- 发生了一件可怕的事情,代码由于未知原因回到了以前的某个时刻,我也不知道它回到了什么时候,搞了好久。
- 引入了富文本编辑器,编辑器图片内容处理还没有做,在看官方文档。
明天计划的事情
做一下富文本编辑器的图片发送,耐心看文档。
遇到的问题
上面的未知原因算不算。。
收获
写一个简单的教程,带你出坑吧。
Angular 4 中 TinyMCE 的安装和使用
1. 准备工作
- 确保已经安装了
node 6.9
以上版本 - 确定
npm
以安装 - 确定已经安装了
@Angular/cli
- 可以使用以下命令确认:
xxx:~ xxx$ node -vv7.10.0xxx:~ xxx$ npm -v4.2.0xxx:~ xxx$ ng v_ _ ____ _ ___/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___||___/@angular/cli: 1.1.1node: 7.10.0os: darwin x64
若以上都完成就可以开始了。
2. 开始
- 新建一个demo:
ng new NgTiny
- 安装TinyMCE
cd NgTinynpm install tinymce@4.5.3 --save
- 将TinyMCE的皮肤文件移动到assets文件夹。
默认TinyMCE的皮肤文件是在node_modules/tinymce/skins
目录下,需要手动移动到src/assets/skins
目录下才可以正常使用。懒的话直接copy下面命令。
// For Macos and Linux, use:cp -r node_modules/tinymce/skins src/assets/skins// For Windows, use:xcopy /I /E node_modules/tinymce/skins src/assets/skins
- 新建一个本地Angular TinyEditComponent
ng g component TinyEditor
- 可以正式开工了。
定义一个变量,后面我们用它来引用tinyMce。declare var tinymce: any;
哦。当然是在你在组件中,比如:tiny-editor.component.ts
中干这些事。
还需要下面这些,自己对照有没有,没有copy过去。
import {Component,AfterViewInit,EventEmitter,OnDestroy,Input,Output} from '@angular/core';import 'tinymce';import 'tinymce/themes/modern';import 'tinymce/plugins/table';import 'tinymce/plugins/link';declare var tinymce: any;@Component({selector: 'app-tiny-editor',template: `<textarea id="{{elementId}}"></textarea>` // 最好不要这么干,其实无所谓了,因为 这就是个空架子})export class TinyEditorComponent implements AfterViewInit, OnDestroy {@Input() elementId: String;@Output() onEditorContentChange = new EventEmitter();editor;ngAfterViewInit() {tinymce.init({selector: '#' + this.elementId, // id 属性绑定在父组件上plugins: ['link', 'table'],skin_url: 'assets/skins/lightgray', // 这里是刚才移动的主题文件setup: editor => {this.editor = editor;editor.on('keyup change', () => {const content = editor.getContent();this.onEditorContentChange.emit(content); // 通过keyup change事件将textarea 发送到父组件,可以自定义事件});}});}ngOnDestroy() {tinymce.remove(this.editor); // 组件移除时销毁编辑器}}
- 这时候打开你的组件:
不用惊讶,它就是这个样子,所以,需要在父组件中显示它:
<app-tiny-editor[elementId]="'my-editor'"(onEditorContentChange)="keyupHandler($event)"></app-tiny-editor>
ok,现在可以看到它完整的样子了:
6. 导入编辑器只是第第一步,通常我们需要对它进行一些操作,比如获取内容:
编辑器本身提供了输出属性,上面的keyupHandler($event)">
就是取得编辑器中的输入内容。
所以我们就拿到的输入内容:
public keyupHandler(event: any) {console.log(event); // 简单将内容打印出来}
当然,也可以进行其他很多操作,更多请参考官方文档:官方文档
评论