Angular のリッチテキストエディタ

Rana Hasnain Khan 2022年5月23日
Angular のリッチテキストエディタ

Angular でリッチテキストエディターを作成する方法と、作成できるライブラリを紹介します。

Angular で Angular-Editor ライブラリを使用してリッチテキストエディタを作成する

ユーザーがコンテンツを編集できるようにする機能を必要とするコンテンツ管理システムまたは Web ソフトウェアを作成する場合、プレーンテキストを使用するかリッチテキストエディターを作成するかの 2つのオプションがあります。リッチテキストエディタは、付属の多くのオプションを使用してテキストをフォーマットするために使用されます。

HTML コンテンツに変換される画像、リンク、オーディオ、およびビデオを追加できます。

Angular には、Angular-EditorAngular TrixAngular MeditorngQuillAngular インラインテキストエディターなど、リッチテキストエディターを Web アプリケーションに統合するのに役立つライブラリがたくさんあります。

リッチテキストエディタを作成するために使用するライブラリは、@kolkov/angular-editor です。npm パッケージマネージャーを使用して、@kolkov/angular-editor をインストールできます。

# CLI
npm install @kolkov/angular-editor --save

インストール後、app.module.ts@angular/common/http から HttpClientModule をインポートし、@kolkov/angular-editor から AngularEditorModule をインポートする必要があります。

app.module.ts は次のようになります。

# angular
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpClientModule} from '@angular/common/http';

import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
import { AngularEditorModule } from '@kolkov/angular-editor';


@NgModule({
  imports:      [ BrowserModule, FormsModule, AngularEditorModule, HttpClientModule ],
  declarations: [ AppComponent, HelloComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

これで、AngularEditorConfig を使用してリッチテキストエディタを構成できます。以下の構成が可能です。

構成 タイプ デフォルト 説明
editable Boolean true エディターを有効または無効にする
spellcheck Boolean true スペルチェックを有効または無効にする
translate string yes 翻訳を有効または無効にする
sanitize Boolean true DOM サニタイズを有効または無効にします
height string auto それを使ってエディタの高さを設定できます
minHeight string 0 それを使用してエディターの最小の高さを設定できます
maxHeight string auto これを使用してエディターの最大高さを設定できます
width string auto それを使ってエディタの幅を設定できます
minWidth string 0 それを使用してエディタの最小幅を設定できます
enableToolbar Boolean true ツールバーを有効または無効にする
showToolbar Boolean true ツールバーの表示または非表示
toolbarPosition string top ツールバーの位置を上または下に設定できます
placeholder string - エディターのプレースホルダーを設定できます
defaultParagraphSeparator string - p タグなどのデフォルトの段落区切り文字を定義できます
defaultFontName string - Arial などのデフォルトフォントを設定できます
defaultFontSize string - デフォルトのフォントサイズを設定できます
uploadUrl string - 画像アップロードエンドポイントを設定し、imageUrl キーを使用して応答を返すことができます。 {"imageUrl" : }
upload function - それを使って画像アップロード機能ができます。
uploadWithCredentials Boolean false 画像アップロードのパスワードを保護するかどうかを設定できます。
fonts Font[] - [{name, class}] など、使用できるフォントの配列を設定できます。
customClasses CustomClass[] - エディターで使用できる利用可能なクラスの配列を設定できます。
outline Boolean true エディターのアウトラインに焦点を合わせることができます。
toolbarHiddenButtons string[][] - 非表示にするボタン名または要素の配列を設定できます。

上記の構成を使用して、リッチテキストエディターを構成します。

# angular
import { Component } from '@angular/core';
import { AngularEditorConfig } from '@kolkov/angular-editor';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
})
export class AppComponent {
  name = 'Angular 6';
  htmlContent = '';

  config: AngularEditorConfig = {
    editable: true,
    spellcheck: true,
    height: '10rem',
    minHeight: '5rem',
    placeholder: 'Enter text in this rich text editor....',
    defaultParagraphSeparator: 'p',
    defaultFontName: 'Arial',
    customClasses: [
      {
        name: 'Quote',
        class: 'quoteClass',
      },
      {
        name: 'Title Heading',
        class: 'titleHead',
        tag: 'h1',
      },
    ],
  };
}

angular-editor タグを使用してテンプレートを作成し、リッチテキストエディターとリッチテキストエディターの出力を表示します。app.component.ts で定義した htmlContent 変数を使用します。

app.component.html のコードは次のようになります。

# angular
<h1>AngularEditor</h1>
<angular-editor [(ngModel)]="htmlContent" [config]="config"></angular-editor>
<h1>HTML Output</h1>
<div class="html">
  {{ htmlContent }}
</div>

出力:

Angular のリッチテキストエディタ

この簡単な方法で、リッチテキストエディタを作成できます。

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn