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,所以我不能在这里给出一个具体的例子,但必须有一种方法,可以设置自己的代码完成提供程序,也可以向现有的提供程序提供该模式。诊断选项也是根据文档配置要使用的模式的地方