Angular 创建富文本编辑器

Posted Angular完全开发手册

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular 创建富文本编辑器相关的知识,希望对你有一定的参考价值。

在创建富文本编辑器之前,首先了解一下如何获取 dom 的引用。

ViewChild:

在模板中使用模板变量标记元素,然后在 Component 类中使用 @ViewChild 来获取元素的引用。

 
   
   
 
  1. import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';

  2. @Component({

  3.  selector: 'app-find-element',

  4.  template: `

  5.              <input type="text"

  6.                     value="123"

  7.                     #input>

  8.            `,

  9.  styles:   [],

  10. })

  11. export class FindElementComponent implements OnInit {

  12.  @ViewChild('input') input: ElementRef<htmlInputElement>;

  13.  constructor() {

  14.  }

  15.  ngOnInit() {

  16.    console.log('onInit', this.input.nativeElement.value); // 123

  17.    console.log('onInit', this.input.nativeElement.offsetWidth); // 132

  18.  }

  19. }

如果想获取 host 元素,需要在 component 的 constructor 中注入 ElementRef。

 
   
   
 
  1. import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';

  2. @Component({

  3.  selector: 'app-find-element',

  4.  template: `

  5.              <input type="text"

  6.                     value="123"

  7.                     #input>

  8.            `,

  9.  styles:   [],

  10. })

  11. export class FindElementComponent implements OnInit {

  12.  @ViewChild('input') input: ElementRef<HTMLInputElement>;

  13.  constructor(private host: ElementRef) {

  14.  }

  15.  ngOnInit() {

  16.    console.log(this.host.nativeElement);

  17.    // <app-find-element><input type="text" value="123"></app-find-element>

  18.  }

  19. }

接下来,就可以创建富文本编辑器了。

 
   
   
 
  1. npm i --save @ckeditor/ckeditor5-build-classic

创建一个组件

 
   
   
 
  1. import {

  2.  Component,

  3.  OnInit,

  4.  ViewChild,

  5.  ElementRef,

  6.  AfterViewInit

  7. } from '@angular/core';

  8. import ClassicEditor from '@ckeditor/ckeditor5-build-classic';

  9. @Component({

  10.  selector: 'app-editor',

  11.  template: `

  12.  <textarea #container>

  13.    <p>

  14.      editor works!

  15.    </p>

  16.  </textarea>

  17.  `,

  18.  styles: []

  19. })

  20. export class EditorComponent implements AfterViewInit {

  21.  @ViewChild('container') container: ElementRef;

  22.  constructor() {}

  23.  ngAfterViewInit(): void {

  24.    const c = this.container.nativeElement;

  25.    ClassicEditor.create(c)

  26.      .then(editor => {

  27.        console.log(editor);

  28.      })

  29.      .catch(error => {

  30.        console.error(error);

  31.      });

  32.  }

  33. }

看一下成果:

以上是关于Angular 创建富文本编辑器的主要内容,如果未能解决你的问题,请参考以下文章

angularJS使用ocLazyLoad实现js延迟加载

第2136期Angular富文本编辑器之路的探索

AngularJS集成富文本编辑器

轻量级富文本编辑器quill editor结合iview的使用

浅谈angularjs绑定富文本出现的小问题

如何在 PyQt4 创建的 GUI 中以富格式显示一些不可编辑的文本?