发表于: 2017-06-15 20:32:53

2 1150


2017-06-15 Day086

今天完成的事情

  1. 发生了一件可怕的事情,代码由于未知原因回到了以前的某个时刻,我也不知道它回到了什么时候,搞了好久。
  2. 引入了富文本编辑器,编辑器图片内容处理还没有做,在看官方文档。

明天计划的事情

做一下富文本编辑器的图片发送,耐心看文档。

遇到的问题

上面的未知原因算不算。。

收获

写一个简单的教程,带你出坑吧。

Angular 4 中 TinyMCE 的安装和使用

1. 准备工作

  1. 确保已经安装了node 6.9以上版本
  2. 确定npm以安装
  3. 确定已经安装了@Angular/cli
  4. 可以使用以下命令确认:
xxx:~ xxx$ node -v
v7.10.0
xxx:~ xxx$ npm -v
4.2.0
xxx:~ xxx$ ng v
   _                      _                 ____ _     ___
  / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
 / \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
/ ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
/_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
              |___/
@angular/cli: 1.1.1
node: 7.10.0
os: darwin x64

若以上都完成就可以开始了。

2. 开始

  1. 新建一个demo:
ng new NgTiny
  1. 安装TinyMCE
cd NgTiny
npm install tinymce@4.5.3 --save
  1. 将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
  1. 新建一个本地Angular TinyEditComponent
ng g component TinyEditor
  1. 可以正式开工了。
    定义一个变量,后面我们用它来引用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 changetextarea
       });
     }
   });
 }
 ngOnDestroy() {
   tinymce.remove(this.editor);        //
 }
}
  1. 这时候打开你的组件:
    这是你的富文本编辑器
    不用惊讶,它就是这个样子,所以,需要在父组件中显示它:
           <app-tiny-editor
             [elementId]="'my-editor'"
             (onEditorContentChange)="keyupHandler($event)">
           </app-tiny-editor>

ok,现在可以看到它完整的样子了:
还是你的富文本编辑器
6. 导入编辑器只是第第一步,通常我们需要对它进行一些操作,比如获取内容:
编辑器本身提供了输出属性,上面的keyupHandler($event)">就是取得编辑器中的输入内容。
所以我们就拿到的输入内容:

 public keyupHandler(event: any) {
   console.log(event);    //
 }

当然,也可以进行其他很多操作,更多请参考官方文档:官方文档



返回列表 返回列表
评论

    分享到