Angular で Monaco エディターを使用する方法の簡単な分析

青灯夜游
リリース: 2022-10-17 20:04:09
転載
2696 人が閲覧しました

angular で monaco エディタを使用するにはどうすればよいですか?以下の記事は、最近業務で使用したangularでのmonaco-editorの使い方を記録したものですので、皆様のお役に立てれば幸いです。

Angular で Monaco エディターを使用する方法の簡単な分析

#インストールの依存関係

angular12 以前では選択できます

# #monaco-editor
  • ngx-monaco-editor
  • これは問題ありませんが、より高いバージョンの angular を使用している場合は、npm を使用して ngx-monaco-editor をインストールする必要があります。 . エラーを報告します。 [関連チュートリアルの推奨事項: "
angularjs ビデオ チュートリアル

"]元の作成者がこのライブラリのメンテナンスを停止したようであるため、最終サポートは angular12 バージョンのままです

#もちろん、問題を解決するためにプロンプ​​トが表示されたら --force または --legacy-peer-deps を使用することを選択できます。Angular で Monaco エディターを使用する方法の簡単な分析

しかし、いくつかの隠れた問題を排除/回避するために、これを元の作成者のものに追加しました 基本的に、フレームワークの角度サポートは 14 にアップグレードされ、継続的に更新されます

@rickzhou/ngx-monaco-editor

##github

github.com/rick-chou/n…

npm

www.npmjs.com/package/@ri …

もちろん、作成者のソース コードを自分のローカル コードに移動することも選択できます。これはまったく問題ありません。

base-editor.ts で紹介されています。 monaco-editor

config.ts
  • diff-editor.component.ts
  • editor.component.ts
  • editor.module.ts
  • types.ts

##github.com/rick-chou/n…Angular で Monaco エディターを使用する方法の簡単な分析

lib ディレクトリを移動するだけです。6 つのファイルをダウンロードして、独自のプロジェクトのモジュールとして使用するだけです。

Use

In実際、すべての API はファイル editor.api.d.ts
// 在这个editor下就可以找到所有TS类型
import { editor } from 'monaco-editor';
ログイン後にコピー

にあります。以下は一般的に使用される

1 設定の記録です。

// eg
export const READ_EDITOR_OPTIONS: editor.IEditorOptions = {
  readOnly: true,
  automaticLayout: false,
  minimap: {
    enabled: false,
  },
  renderFinalNewline: false,
  scrollbar: {
    vertical: 'visible',
  },
  mouseWheelZoom: true,
  contextmenu: false,
  fontSize: 16,
  scrollBeyondLastLine: false,
  smoothScrolling: true,
  cursorWidth: 0,
  renderValidationDecorations: 'off',
  colorDecorators: false,
  hideCursorInOverviewRuler: true,
  overviewRulerLanes: 0,
  overviewRulerBorder: false,
};
ログイン後にコピー

2、および取得エディタの例

<ngx-monaco-editor
  [options]="readEditorOptions"
  [(ngModel)]="originLogVal"
  (onInit)="initViewEditor($event, false)">
</ngx-monaco-editor>

public initViewEditor(editor: editor.ICodeEditor): void {
  // 这个editor就是实例
  // 下面方法中的editor就是这里的editor
  this.editor = editor
}
ログイン後にコピー

3. 現在のカーソル位置を取得します

editor.getPosition()
ログイン後にコピー

4. マウスによって現在選択されているテキストを取得します

editor.getModel().getValueInRange(editor.getSelection());
ログイン後にコピー

5. カーソル位置を変更します

editor.setPosition({
      column: 1,
      lineNumber: 1,
    });
ログイン後にコピー

6、指定された行をビジュアル領域の中央までスクロールします

editor.revealLineInCenter(1);
ログイン後にコピー

7、イベントをバインド

editor.onMouseDown(event => {
  // do something
});
editor.onKeyDown(event => {
  // do something
});
ログイン後にコピー

8、保存/復元しますスナップショット

const snapshot = editor.saveViewState();
editor.restoreViewState(snapshot);
ログイン後にコピー

9、イベントをブロック

// eg 组件默认的搜索快捷键
function isMac() {
  return /macintosh|mac os x/i.test(navigator.userAgent);
}

editor.onKeyDown(event => {
  if (
    (isMac() && event.browserEvent.key === &#39;f&#39; && event.metaKey) ||
    (!isMac() && event.browserEvent.key === &#39;f&#39; && event.ctrlKey)
  ) {
    event.preventDefault();
    event.stopPropagation();
  }
});
ログイン後にコピー
プログラミング関連の知識の詳細については、

プログラミング ビデオ

をご覧ください。 !

以上がAngular で Monaco エディターを使用する方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート