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の実装 クラスタ構築

推薦する

ノードを使用して静的ファイルキャッシュを実装する方法

目次キャッシュキャッシュ位置の分類キャッシュ設定ヘッダーNodeは静的ファイルキャッシュを実装する強...

MySQL 時間統計方法の概要

データベースの統計を行う場合、多くの場合、年、月、日に基づいてデータを収集し、echart を使用し...

Vueライフサイクルカメラの8つのフック関数

目次1. beforeCreateとcreated関数2. beforeMountとmount関数3...

トークンの有効期限が切れたときにページを更新するときに繰り返しプロンプトが表示されないようにする Vue について

トークンの有効期限が切れたら、ページを更新します。ページの読み込み時にバックエンドに複数のリクエスト...

HTMLのフォントがline-heightを指定しても垂直方向に中央揃えできない問題の解決方法を詳しく説明します

による写真に示されている効果を例に挙げてみましょう。明らかに、「次へ」というテキストを水平方向だけで...

Vue の DOM の非同期更新の簡単な分析

目次Vue が DOM を非同期更新する原理1 実際の DOM 要素を取得できるのはいつですか? 2...

js キャンバスはスライダー検証を実現します

この記事の例では、スライダー検証を実装するためのjsキャンバスの具体的なコードを参考までに共有してい...

セマンティック XHTML タグの紹介

まず最初に指摘しておきたいのは、人間は視覚的な区分を通じてコン​​テンツの意味を判断できるが、検索エ...

MacにHomebrewをインストールする際の注意点

最近、Xiao Ming は新しい Mac を購入し、独自のブログ Web サイトを構築したいと考え...

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例最近のプロ...

MYSQL メタデータ ロック (MDL ロック) の理論とロック タイプ テスト

目次MYSQL メタデータ ロック (MDL ロック) 学習理論とロック タイプ テスト1. 予備的...

CSS 境界線の半分または部分的に表示される実装コード

1. 疑似クラスを使用して境界線の半分を表示する <!DOCTYPE html> <...

Vue での親子コンポーネント通信と、sync を使用して親子コンポーネント データを同期する

目次序文子コンポーネントは親コンポーネントにデータを渡す1. 親コンポーネントから子コンポーネントに...

Linux は、ディレクトリが存在するかどうかを判断するために if を使用します。

Linux で if を使用してディレクトリが存在するかどうかを判断する方法方法は次のとおりです。...

MySQL 接続例外とエラー 10061 の解決方法

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...