WangEditor リッチ テキスト コンポーネントを Angular でカプセル化する方法

WangEditor リッチ テキスト コンポーネントを Angular でカプセル化する方法

リッチ テキスト コンポーネントは、Web プログラムで、特にブログやフォーラムなどの Web サイトのバックエンドを開発するときに非常によく使用されるコンポーネントです。

Angularの力のおかげで、WangEditorコンポーネントのカプセル化は非常に簡単です

1. yarnまたはnpmを使用してwangeditorをインストールする

糸追加 wangeditor

2. Angularコンポーネントを作成する

ng gc q-wang-エディター

3. コンポーネントロジックをカプセル化する

3.1 テンプレート

<div #王></div>

3.2 TSロジック

'@angular/core' から { Component、ElementRef、EventEmitter、Input、OnDestroy、OnInit、Output、ViewChild、ViewEncapsulation } をインポートします。
'@angular/forms' から ControlValueAccessor をインポートします。

「wangeditor」からEをインポートします
'highlight.js' から hljs をインポートします
「node_modules/highlight.js/styles/xcode.css」をインポートします。

@成分({
  セレクター: 'q-wang-editor',
  テンプレート URL: './q-wang-editor.component.html',
  スタイルURL: [
    './q-wang-editor.component.less',
    '../../../../../node_modules/highlight.js/styles/xcode.css'],
  カプセル化: ViewEncapsulation.None、
})
エクスポートクラス QWangEditorComponent は OnInit、ControlValueAccessor、OnDestroy を実装します {

  @ViewChild("王")
  エディター!: ElementRef;

  @Input() 値: 文字列 = '';

  @Input() 高さ = 300;

  @Output() 値の変更 = 新しい EventEmitter();

  onChange: ((値: 文字列) => {}) | 未定義;

  html = ''

  wangEditor: E | 未定義;

  コンストラクタ() { }
  ngOnDestroy(): void {
    this.wangEditor?.destroy();
  }
  書き込み値(obj: 任意): void {
    .html をコピーします。
    this.wangEditor?.txt.html(this.html)
  }
  変更時に登録(fn: any): void {
  }
  タッチ時に登録(fn: any): void {
  }

  ngOnInit(): void {
    タイムアウトを設定する(() => {
      this.wangEditor = 新しい E(this.editor.nativeElement)
      this.wangEditor.config.zIndex = 500;
      this.wangEditor.config.height = this.height
      this.wangEditor.highlight = hljs;
      this.wangEditor.config.onchange = (html: 任意) => {
        this.valueChange.emit(html)
        (変更後)の場合
          html の変更をこのメソッドで保存します。
        }
      }
      this.wangEditor.config.onchangeTimeout = 500;
      この.wangEditor.create();
      this.wangEditor.txt.html(this.html)
    }, 200);
  }

}

一般的な考え方:

  • ViewChildを使用してHTMLのDOM要素を参照する
  • OnInit が成功したら、WangEditor エディターを初期化し、テンプレート内の ElementRef を WangEditor のコンテナーに配置して、WangEditor にインターフェースの DOM 操作を制御させます。
  • このコンポーネントが Angular フォーム検証をサポートできるようにするには、ControlValueAccessor を実装します。
  • ngOnDestroyを実装します。コンポーネントが破棄されたら、WangEditorのdestroyを呼び出します。

4. コンポーネントを使用する

<q-wang-editor [高さ]="550"></q-wang-editor>

5. 効果のプレビュー

6. 最後

WangEditor の Angular コンポーネントのカプセル化は基本的に完了しています。写真のアップロードなど、さらに機能が必要な場合は、ニーズに応じて機能を追加できます。

WangEditor リッチ テキスト コンポーネントの Angular カプセル化に関するこの記事はこれで終わりです。Angular WangEditor リッチ テキスト コンポーネントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も皆様に 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Angularでカスタムコンポーネントの双方向バインディングを実装する2つの方法の詳細な説明
  • Angular5の子コンポーネントは親コンポーネントから渡された値の変化を監視します。
  • Angular CLI を使用してカスタム ファイルとコンポーネントを生成する方法
  • Angular2 コンポーネントでタイマーを定期的に更新およびクリアする例
  • Angular6はシンプルなSelectコンポーネントの例を記述します

<<:  Linux に Python 3.8.1 をインストールするための詳細なチュートリアル

>>:  docker redis5.0 clusterの実装 クラスタ構築

推薦する

MySQLデータベースのnullに関する知識ポイントのまとめ

MySQL データベースでは、null は一般的な状況です。MySQL での null に関する注意...

MySQL Installer Community 5.7.16 インストール詳細チュートリアル

この記事では、MySQL インストールの詳細なチュートリアルを記録し、全員と共有します。 1. バー...

HTML タグ マーキーはさまざまなスクロール効果を実現します (JS 制御なし)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

Windows DNS サーバーに「ワームレベル」の脆弱性が露呈、17 年間存在

脆弱性の紹介SigRed の脆弱性はワーム化可能であるため非常に危険です。つまり、ユーザーの介入なし...

シンプルなショッピングカート機能を実現するjs

この記事の例では、簡単なショッピングカート機能を実現するためのjsの具体的なコードを参考までに共有し...

テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加によく使用される MySQL の SQL 文の概要

この記事では、テーブルの作成、フィールドの追加、フィールドの変更、インデックスの追加を行う一般的な ...

MySQL インジェクションにおける outfile、dumpfile、load_file 関数の詳細な説明

SQL インジェクション脆弱性を悪用する後期段階では、MySQL のファイル シリーズ関数を使用して...

JavaScript のフラット配列をツリー構造に変換する例

目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...

nginx で複数のフロントエンド プロジェクトをデプロイするいくつかの方法

nginx を使用して 1 つのサーバーに複数のフロントエンド プロジェクトをデプロイする 3 つの...

Nginx ログのカスタマイズとログ バッファの有効化の詳細な説明

序文ウェブサイトのアクセス元をカウントしたい場合は、PHP を使用して情報を取得してデータベースに記...

MySQLログシステムの詳細情報共有

大規模なシステムに取り組んだことがある人なら誰でも、ログの役割を過小評価してはならないことを知ってい...

マウス追従ゲームを実現するjs

この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...

IMG での UserMap の使用例

usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...

MySQL および Oracle のバッチ挿入 SQL の一般的な記述例

目次例えば:一般的な執筆:要約する例えば:次に、データベースのUSERテーブルにUserオブジェクト...

JavaScript を使用した Web 計算機の作成

この記事は主にJavaScriptを使用してWeb計算機を実現する効果を記録し、参考として掲載してい...