当前位置: 首页 > news >正文

记录angular使用codemirror的过程和遇到的问题

code的中文用户手册API_CodeMirror_用户手册_Tun6

1  安装codemirror,ng2-codemirror,   

npm install codemirror ng2-codemirror

2 在angular.json中architect引入一些文件

"architect": {

   "build" {
       "options": {
          "styles": [
             // codemirror的样式
             "node_modules/codemirror/lib/codemirror.css", 
             "node_modules/codemirror/addon/fold/foldgutter.css",
              // 主题样式(需要那种主题引入对应的css)
             "node_modules/codemirror/theme/blackboard.css"
              // 校验的样式
             "node_modules/codemirror/addon/lint/lint.css"
           ],
          "scripts": [
              // 引入codemirror.js文件
             "node_modules/codemirror/lib/codemirror.js"
           ]
       }
  
    }
}

3 在所在的module文件里引入CodemirrorModule

import { CodemirrorModule } form 'ng2-codemirror'

@NgModule({
       imports: [ CodemirrorModule  ]

})

4 在add-rule-config.component.html引入

<codemirror
     [config]="codeOption"
     [(ngModel)]="codeData">
</codemirror>

5 在add-rule-config.component.ts使用

import 'codemirror/lib/codemirror';
import 'codemirror/addon/selection/active-line';
// 使用json
import 'codemirror/mode/javascript/javascript';
// 显示校验
import 'codemirror/addon/hint/javascript-hint';
import 'codemirror/addon/hint/show-hint';
import 'codemirror/addon/lint/lint';
// 校验json-lint
import 'codemirror/addon/lint/json-lint';

export class AddRuleConfigComponent implements OnInit {

  codeOption: any = {
    mode: 'application/json',
    lineNumbers: true,
    // theme: 'blackboard',
    gutters: ['CodeMirror-lint-markers']
    lineWrapping: true,
    autofocus: true,
    tabSize: 2,
    lint: true,
    styleActiveLine: true
  };
  codeData = '{}'
}

6 遇到的问题

    (1)安装的codemirror之后没有lib和addon等文件,可能因为是版本问题,卸载codemiror,安装版本为5.62.3的codemirror

npm install codemirror@5.62.3

     (2) 使用json校验时报window.jsonlint not defined, Codemirror JSON linting cannot run,安装json-lint,参考文档https://github.com/scniro/react-codemirror2/issues/21

1 npm install json-lint

2 在add-rule-config.component.ts 引入
   // 如果在弹框使用了codemirro的话,jsonlint需要放到父组件里,因为在弹框里取不到 window['jsonlint']这个属性(原因还没取找)
   import * as jsonlint from 'jsonlint-mod'
   window['jsonlint']=jsonlint

   (3) 如果使用mode时,发现页面没有展示对应mode的效果,可能因为没有引入对应的文件,使用任何属性都需引入对应文件

相关文章:

  • 猿创征文|当我在追光 我与光同航--我与Java的技术成长之路
  • python基础专栏12-python基础篇-复合数据类型-字典
  • 投入不到一万,月赚十万+的海外平台搬运项目
  • 赚钱副业项目:steam搬砖的一点经验
  • Go 1.18 版本新特性详解!
  • 共码未来 | 多维提升开发技能,玩转各大开发者平台活动
  • html5新增特性之画布canvas的使用
  • 查题校园题库系统 授权即可使用
  • 弹性力学的简单学习
  • 青云霍秉杰:一文读懂Prometheus长期存储主流方案
  • 【Swoole系列4.6】协程连接池
  • 美的集团上半年营收1827亿:净利160亿 狠心批量裁员
  • 手机+卫星,到底有多难?
  • c++基础(九)——静态成员
  • Android中的Drawable(三)
  • __proto__ 和 prototype的关系
  • 4个实用的微服务测试策略
  • Babel配置的不完全指南
  • ES6系列(二)变量的解构赋值
  • iOS | NSProxy
  • JavaScript 一些 DOM 的知识点
  • java中的hashCode
  • js继承的实现方法
  • Magento 1.x 中文订单打印乱码
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PAT A1050
  • Python利用正则抓取网页内容保存到本地
  • React组件设计模式(一)
  • SegmentFault 2015 Top Rank
  • WePY 在小程序性能调优上做出的探究
  • 闭包--闭包之tab栏切换(四)
  • 产品三维模型在线预览
  • 多线程 start 和 run 方法到底有什么区别?
  • 计算机在识别图像时“看到”了什么?
  • 将回调地狱按在地上摩擦的Promise
  • 正则表达式小结
  • C# - 为值类型重定义相等性
  • 关于Android全面屏虚拟导航栏的适配总结
  • 移动端高清、多屏适配方案
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​低代码平台的核心价值与优势
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #includecmath
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (轉)JSON.stringify 语法实例讲解
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .Net - 类的介绍
  • .Net 8.0 新的变化
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 中 GetProcess 相关方法的性能
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET正则基础之——正则委托