Angular @Matria ui/ngx编辑器-无法使用编辑器获取自定义json模式

Angular @Matria ui/ngx编辑器-无法使用编辑器获取自定义json模式,angular,monaco-editor,ngx-monaco-editor,Angular,Monaco Editor,Ngx Monaco Editor,我不知道如何使用@materia ui/ngx monaco editor库获取一个自定义json模式来加载并用于验证摩纳哥编辑器实例中的输入 我一直在遵循这里的指南,当然还有图书馆的指南 我正试图根据他们的文档从库中使用他们的MonacoEditorLoaderService,并设置jsonDefaults的各种诊断选项,如下所示: constructor(private monacoLoaderService: MonacoEditorLoaderService) { this.mo

我不知道如何使用
@materia ui/ngx monaco editor
库获取一个自定义json模式来加载并用于验证摩纳哥编辑器实例中的输入

我一直在遵循这里的指南,当然还有图书馆的指南

我正试图根据他们的文档从库中使用他们的
MonacoEditorLoaderService
,并设置jsonDefaults的各种诊断选项,如下所示:

constructor(private monacoLoaderService: MonacoEditorLoaderService) {
    this.monacoLoaderService.isMonacoLoaded$
      .pipe(
        filter(isLoaded => isLoaded),
        take(1)
      )
      .subscribe(() => {
        console.log("loaded");
        monaco.languages.json.jsonDefaults.setDiagnosticsOptions({
          enableSchemaRequest: true,
          validate: true,
          schemas: [
            // @ts-ignore
            {
              fileMatch: ["file:///schema"], // associate with our model
              schema: {
                type: "object",
                properties: {
                  scopes: {
                    description: "something useful here",
                    type: "array",
                    items: {
                      type: "object",
                      properties: {
                        include: {
                          type: "array",
                          items: [
                            {
                              type: "string"
                            }
                          ]
                        },
                        exclude: {
                          type: "array",
                          items: [
                            {
                              type: "string"
                            }
                          ]
                        },
                        asset_types: {
                          type: "array",
                          items: [
                            {
                              type: "string"
                            }
                          ]
                        }
                      },
                      required: ["include"]
                    }
                  }
                },
                required: ["scopes"]
              }
            }
          ]
        });
      });
  }
Ctrl+Space只给了我下面的
$schema
选项,并且没有模式定义的属性

很明显,我对如何正确设置模式加载有一些误解

我设置的Stackblitz在这里-

有人能指出这里的问题是什么吗?我做错了什么


谢谢

最简单的解决方案是在编辑器初始化后设置模型:

  editorInit(editor: MonacoStandaloneCodeEditor) {
    const model = monaco.editor.createModel(
      this.getCode(),
      "json",
      monaco.Uri.parse("a://b/foo.json")
    );
    editor.setModel(model);
  }
下面是一个使用json模式的stackblitz示例:


也就是说,首选的方法是使用该模型初始化编辑器,而不是在创建之后设置它。。。但是在检查了源代码ngx编辑器之后,这种方式是最一致的解决方案。

屏幕显示了实际的代码完成情况,但是您设置的是诊断(错误+警告)。我不知道NGX,所以我不能在这里给出一个具体的例子,但必须有一种方法,可以设置自己的代码完成提供程序,也可以向现有的提供程序提供该模式。诊断选项也是根据文档配置要使用的模式的地方