首页 > 其他分享 >Angular + quill实现富文本编辑器

Angular + quill实现富文本编辑器

时间:2023-04-08 09:04:14浏览次数:49  
标签:文本编辑 1.3 import ngx Angular quill

前言

由于需要一个富文本编辑器来编辑一些网页内容, 手动编辑后存储到数据库比较麻烦, 所以着手实现一个自己的富文本编辑器, 来编辑和存储一些html文件.
这里使用Angular框架, 加Quill库实现.

ngx-quill: https://github.com/KillerCodeMonkey/ngx-quill
quill官网: https://quilljs.com/

创建Angular工程

创建工程

首先创建一个angular工程. 工程的名字就叫angular-editor.


ng new angular-editor

添加依赖

这里需要添加ngx-quill依赖包, 以下是 ngx-quill 与Angular之间的兼容关系.

Angular ngx-quill supported
v15 >= 20.0.0 until May, 2024
v14 >= 17.0.0 until Dec 02, 2023
v13 >= 15.0.0, < 17.0.0 until May 04, 2023

由于我目前使用的angular版本13.3.11, 我选择了一个稳定版本[email protected]
查看[email protected]的配置文件package.json, 其对应的quill版本为[email protected], 所以这里quill使用[email protected]. 为了让typescript能识别类型信息, 这里还需要导入一个开发依赖包@types/[email protected], 版本也可以从ngx-quill的package.json中找到.


npm install [email protected] --save
npm install [email protected] --save
npm install @types/[email protected] --save-dev

当前最新版本为 [email protected] [email protected]

创建编辑器

引入Quill模块

添加依赖包之后还不能直接使用Quill, 还需要再使用Quill的Module声明文件引入它.

以下以根模块为例讲解如何引入模块,引入ngx-quill的QuillModule

app.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { QuillModule } from 'ngx-quill';  // 引入富文本编辑器模块
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    QuillModule.forRoot()                  // 富文本编辑器模块
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

引入quill css样式

由于我使用的scss, 所以可以很方便的引入quill css. 可以在预编译的时候将quill的样式编译进来.

找到styles.scss, 添加如下代码引入quill样式

quill提供两种主题, 一种是bubble, 另一种是snow, 默认是snow, 可以任选一种导入, 也可以同时导入两种主题, 方便动态切换样式.

styles.scss

@import url('https://cdn.quilljs.com/1.3.7/quill.snow.css');
@import url('https://cdn.quilljs.com/1.3.7/quill.bubble.css');

将quill富文本编辑器添加到页面

做好以上准备工作, 我们就可以将quill富文本编辑器. 以app.component.html为例, 只要在页面添加这样一行, 然后启动angular应用, 就可以看到编辑器了.

<quill-editor></quill-editor>

启动应用看效果

ng serve --open

加载与获取富文本内容

当我们使用quill编辑文档的时候, 往往不是从空白文档开始, 大多数情况下我们是在已有文档的基础上进行修改.

当我们拿到一个文档时, 如何将其内容加载到quill编辑器中呢? 网上很多的教程或博客讲解得不够深入.

首先要将quill-editor与一个control控件连接起来, 如下:


<form [formGroup]="form">
  <quill-editor format="html" formControlName="html"></quill-editor>
</form>

当然连接之前, 我们需要创建该控件.

  form: FormGroup = this.fb.group({
    html: new FormControl('<div>test</div><ul><li>1</li><li class="ql-indent-1">1-1</li><li>2</li><ol><li>numbered</li><li class="ql-indent-1">numbered-1</li></ol></ul><div><br></div>'),
  })

这样我们通过控制该控件, 可以在构建FormControl时传入, 也可以在创建完FormControl后通过setValue方法加载html内容, 就能加载html内容到quill编辑器中. 而在quill中编辑文档内容时, control控件中的内容会自动更新.

当我们准备存盘时, 获取到该控件, 通过value熟悉即可获取到修改后的html内容 form.get('html').value, 而不必去操作quill-editor组件.

更多用法可以参考ngx-quill示例

参考文档

Angular:ngx-quill富文本编辑器的使用

如何在Angular 11/12版本中整合ngx-quill教程

element ui富文本编辑器的使用

标签:文本编辑,1.3,import,ngx,Angular,quill
From: https://www.cnblogs.com/guoapeng/p/17297874.html

相关文章

  • Angular 复习与进阶系列 – Naming Conversion
    前言命名规范对项目维护是很重要的.Angular对项目的渗透很大的,必须做好命名规范,不然会很乱. Angular NamingConversionInjectionToken=UPPER_SNAKE_CAREconstSERVICE_CONFIG_TOKEN=newInjectionToken('ServiceConfig'); elementattributeandproperty......
  • angular项目启动报Another process, with id 24289, is currently running ngcc.
    在npmbuild时突然停下来,再启动就启不起来了。看报错信息是端口被占用,在任务管理器中也找不到这个端口重启vscode、重启电脑都不好使。。可以通过删除node_modules再重新npminstall解决! ......
  • 什么是 Angular library 的 secondary entry points?
    在Angular应用程序和库中,secondaryentrypoints(次要入口点)是指与主入口点不同的导出和发布方式。主入口点是指在package.json文件中声明的默认的入口点,它通常包含了该库的主要功能和API。而secondaryentrypoints则是在Angularlibrary项目中定义的额外的入口点,它们可......
  • SMARTFORMS文本编辑器打不开_解决方法
    SAPGUI740750解决Smartforms文本打不开的问题SCRIPTFORM补丁直接安装后即可正常打开formdesigner界面主要解决:禁用WORD编辑器之后,SMARTFORMS文本编辑器打不开显示空白的情况!http://www.coder100.com/index/index/content/id/1345452......
  • 常用的富文本编辑器统计
    Kindeditor的富文本编辑器百度UMeditor编辑器Tinymce富文本编辑器Simditor富文本编辑器jq22搜索Summernote富文本编辑器......
  • 关于 Angular 应用部署时的 base-href 参数
    import{existsSync}from'fs';server.get(['/shop/*','/shop'],(req,res)=>{res.render(indexHtml,{req,providers:[{provide:APP_BASE_HREF,useValue:req.baseUrl}],});});server.set('views',distFo......
  • Angular 应用里 server.ts 文件的 APP_BASE_HREF token 的用法?
    Angular应用里server.ts文件,下面这段代码的含义?server.get('*',(req,res)=>{res.render(indexHtml,{req,providers:[{provide:APP_BASE_HREF,useValue:req.baseUrl}],});});在Angular应用中,server.ts文件是用于构建服务器端渲染(S......
  • 一文搞定:前端如何选择Angular、React和Vue三大主流框架
    在前端开发领域,目前最流行的三个框架是Angular、React和Vue.js。这些框架非常高效,并且它们各自具有一系列的优缺点。在AI辅助编程工具CodeGeeX的后台中,也看到有大量的前端开发者使用这三个框架,并且Vue的使用率在CodeGeeX的后台中,持续走高。接下来我们针对Angular、React和Vue.js......
  • 【微信小程序-原生开发】富文本编辑器 editor 的使用教程
    表单内容较多时,通常需要输入换行的数据,此处便需要用到富文本编辑器富文本编辑器的渲染<editorclass="editorStyle"style="height:auto"id="editor"placeholder="请输入内容"bindready="onEditorReady"bindinput="contentChange"></editor&......
  • Vue引用富文本编辑器
    1.在package.json加上并安装依赖"devDependencies":{"@jsdawn/vue3-tinymce":"^1.1.7",}2.在页面中引入importVue3Tinymcefrom"@jsdawn/vue3-tinymce";3.使用<vue3-tinymcev-model="item.blockDataObj.text":setting=&qu......