monaco editor在Angular的使用详解

目录
  • 正文
    • 安装依赖
    • 使用

正文

本篇文章主要记录下最近的一次业务中用到的 monaco-editor 在 angular 中的使用

安装依赖

在 angular12 及之前你可以选择

  • monaco-editor
  • ngx-monaco-editor

这是没有问题的 但是如果你使用了更高版本的 angular 在使用 npm 安装 ngx-monaco-editor 时 会报错

因为原作者似乎已经停止了对这个库的维护 最终的支持停留在了 angular12 版本

当然 你选择可以选择正如提示那样 用 --force 或者 --legacy-peer-deps 来解决问题

但是为了 消除/避免 隐藏的一些问题 我在原作者的基础上将框架的 angular 支持提升到了 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…

你只需要移动 lib 目录下的六个文件 然后把它们当成自己项目中的一个 module 去使用就好了

使用

其实所有的 api 都可以在 editor.api.d.ts 这个文件中找到

// 在这个editor下就可以找到所有TS类型
import { editor } from 'monaco-editor';

下面记录一下常用的

  • 设置
// 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,
};
  • 获取editor实例
<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
}
  • 获取当前光标位置
editor.getPosition()
  • 获取当前鼠标选中的文本
editor.getModel().getValueInRange(editor.getSelection());
  • 修改光标位置
editor.setPosition({
      column: 1,
      lineNumber: 1,
    });
  • 滚动指定行到可视区中间
editor.revealLineInCenter(1);
  • 绑定事件
editor.onMouseDown(event => {
  // do something
});
editor.onKeyDown(event => {
  // do something
});
  • 保存/恢复快照
const snapshot = editor.saveViewState();
editor.restoreViewState(snapshot);
  • 阻止某个事件
// eg 组件默认的搜索快捷键
function isMac() {
  return /macintosh|mac os x/i.test(navigator.userAgent);
}
editor.onKeyDown(event => {
  if (
    (isMac() && event.browserEvent.key === 'f' && event.metaKey) ||
    (!isMac() && event.browserEvent.key === 'f' && event.ctrlKey)
  ) {
    event.preventDefault();
    event.stopPropagation();
  }
});

以上就是monaco editor在Angular的使用详解的详细内容,更多关于Angular使用monaco editor的资料请关注我们其它相关文章!

(0)

相关推荐

  • Monaco Editor开发SQL代码提示编辑器实例详解

    目录 安装 简易 SQL 编辑器 相关功能 获取选中代码 替换选中代码 处理光标位置 自定义 SQL 库表提示,并保留原有 SQL 提示 编辑器 resize 编辑器设置主题 SQL 代码格式化 右键菜单汉化 记得销毁编辑器对象哦 踩坑 如何快速去看懂 Monaco Editor 安装 安装依赖,这里请注意版本 yarn add monaco-editor@0.29.1 yarn add monaco-editor-webpack-plugin@5.0.0 配置 webpack 插件 // vu

  • Asp.Net Core 使用Monaco Editor 实现代码编辑器功能

    在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等.我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能.Monaco Editor是著名的VSCode的前身,项目地址:https://microsoft.github.io/monaco-editor/.本文介绍在Asp.Net Core项目中使用Monaco Editor实现代码编辑器功能. 安装 可以使用npm下载moaco-editor: npm install monaco

  • vue2.x中monaco-editor的使用说明

    目录 vue2中使用monaco-editor 安装 配置 创建MonacoEditor公共组件 使用vue-monaco-editor遇到的坑 编辑器重复加载上次编辑器中的内容,不会被新的内容替代 编辑器editorOptions上的配置无法生效 vue2中使用monaco-editor 安装 注意两个库的版本指定 npm install monaco-editor@0.30.1 --save-dev npm install monaco-editor-webpack-plugin@6.0.0

  • vue使用monaco editor汉化右键菜单示例

    安装依赖插件 首先使用npm或者其他包管理工具安装依赖插件: npm install monaco-editor --save npm install monaco-editor-nls --save npm install monaco-editor-webpack-plugin --save npm install monaco-editor-esm-webpack-plugin --save-dev 推荐安装的依赖版本对应:package.json { "dependencies"

  • 详解Monaco Editor中的Keybinding机制

    目录 一.前言 二.举个 三.原理机制 1. 概览 2. 初始化 3. 注册 keybindings 4. key的转换 5.执行 6.卸载 四.结语 一.前言 前段时间碰到了一个 Keybinding 相关的问题,于是探究了一番,首先大家可能会有两个问题:Monaco Editor 是啥?Keybinding 又是啥? Monaco Editor: 微软开源的一个代码编辑器,为 VS Code 的编辑器提供支持,Monaco Editor 核心代码与 VS Code 是共用的(都在 VS Co

  • vue中实现Monaco Editor自定义提示功能

    这次接到一个需求,要在浏览器的 IDE 中支持自定义提示功能,如下所示: 可以看到,它可以根据用户输入的内容来一项一项排除,只显示完全匹配的那一项. 项目的框架是 Vue ,编辑器用的是 Monaco Editor . 什么是 Monaco Editor vscode 是我们经常在用的编辑器,它的前身是微软的一个叫 Monaco Workbench 的项目,而 Monaco Editor 就是从这个项目中成长出来的一个 web 编辑器,他们很大一部分的代码都是共用的,所以 Monaco Edit

  • Monaco Editor实现sql和java代码提示实现示例

    目录 monaco editor创建 sql提示(库表字段关联) java自定义联想 monaco editor创建 //创建和设置值 if (!this.monacoEditor) { this.monacoEditor = monaco.editor.create(this._node, { value: value || code, language: language, ...options }); this.monacoEditor.onDidChangeModelContent(e

  • monaco editor在Angular的使用详解

    目录 正文 安装依赖 使用 正文 本篇文章主要记录下最近的一次业务中用到的 monaco-editor 在 angular 中的使用 安装依赖 在 angular12 及之前你可以选择 monaco-editor ngx-monaco-editor 这是没有问题的 但是如果你使用了更高版本的 angular 在使用 npm 安装 ngx-monaco-editor 时 会报错 因为原作者似乎已经停止了对这个库的维护 最终的支持停留在了 angular12 版本 当然 你选择可以选择正如提示那样

  • Angular排序实例详解

    说点小案例angular的排序 <!DOCTYPE html> <html ng-app="mk"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> *{ margin: 0px; padding: 0px; } nav{ text-align: center; } nav

  • Angular17之Angular自定义指令详解

    1 什么是HTML HTML文档就是一个纯文本文件,该文件包含了HTML元素.CSS样式以及JavaScript代码:HTML元素是由标签呈现,浏览器会为每个标签创建带有属性的DOM对象,浏览器通过渲染这些DOM节点来呈现内容,用户在浏览器中看到的内容就是浏览器渲染DOM对象后的结果. 2 指令的分类 组件.属性指令.结构性指令 3 指定义指令常用到的一些常量 3.1 Directive 用于装饰控制器类来指明该控制器类是一个自定义指令控制器类 3.2 ElementRef 作为DOM对象的引用

  • 使用Angular Cli如何创建Angular私有库详解

    前言 在实际开发中,会发现我们好多工作都是重复的,在代码层面,发现好多代码是可以被重用的.这样我们就可以建一个库,类似于java的库,来提高工作效率. 下面话不多说了,来一起看看详细的介绍吧 创建Angular项目 打开命令行终端, cd 到用于创建应用的目录下,执行创建Angular项目命令: ng new arsprojects -S 此命令将会创建一个新的Angular项目,文件夹名为 arsprojects . -S 参数表示不创建测试文件.我们创建的ng库都将依托于 arsprojec

  • angular双向绑定详解

    目录 双向绑定原理 ngModel 效果图 自定义双向绑定属性 组件-html 组件-ts 外部使用 效果图 总结 双向绑定原理 双向绑定将属性绑定与事件绑定结合在一起. Angular 的双向绑定语法是方括号和圆括号的组合 [()]. [] 进行属性绑定,() 进行事件绑定. 名称规则为 [输入名] + Change. 属性绑定(@Input-输入) - 设置特定的元素属性. 事件绑定(@Output-输出) - 侦听元素更改事件. 所以表单双向绑定中有 ngModel 和 ngModelCh

  • angular内容投影详解

    目录 单内容投影 多内容投影 单个条件的内容投影 app-persons - html app-persons - ts 使用 效果图 多个条件内容投影 appChildRef 调整 app-persons - html app-persons - ts 使用 效果图 总结 单内容投影 利用ng-content来实现 <!-- 组件 - app-content-single --> <div> <h2>标题</h2> <!-- 投影内容显示位置 --&

  • 详解Angular中$cacheFactory缓存的使用

    最近在学习使用angular,慢慢从jquery ui转型到用ng开发,发现了很多不同点,继续学习吧: 首先创建一个服务,以便在项目中的controller中引用,服务有几种存在形式,factory();service();constant();value();provider();其中provider是最基础的,其他服务都是基于这个写的,具体区别这里就不展开了,大家可以看看源码:服务是各个controller之间通话的重要形式,在实际项目中会用的很多,下面是代码: angular.module

  • Angular中$cacheFactory的作用和用法实例详解

    先说下缓存: 一个缓存就是一个组件,它可以透明地储存数据,以便以后可以更快地服务于请求.多次重复地获取资源可能会导致数据重复,消耗时间.因此缓存适用于变化性不大的一些数据,缓存能够服务的请求越多,整体系统性能就能提升越多. $cacheFactory介绍: $cacheFactory是一个为Angular服务生产缓存对象的服务.要创建一个缓存对象,可以使用$cacheFactory通过一个ID和capacity.其中,ID是一个缓存对象的名称,capacity则是描述缓存键值对的最大数量. 1.

随机推荐