我正在使用 Angular6-json-schema-form 从JSON模式生成Angular表单。
我正在尝试使用引用“ $ ref ”从远程REST Web服务填充模式的枚举,但是我遇到了MissingRefError。
这是我的模式:
{
"$id": "http://www.mocky.io/v2/5c7ff2e833000000338484c2.json#",
"title": "A rather large form",
"type": "object",
"properties": {
"noenum": { "$ref": "#/definitions/largeEnum" }
}
}
链接内的JSON具有以下内容:
{
"definitions": {
"largeEnum": {
"type": "string",
"enum": [
"option #0",
"option #1",
"option #2",
"option #3",
"option #4"
]
}
}
}
如果我这样在本地进行操作,它将起作用:
{
"definitions": {
"largeEnum": {
"type": "string",
"enum": [
"option #0",
"option #1",
"option #2",
"option #3",
"option #4"
]
},
"title": "A rather large form",
"type": "object",
"properties": {
"noenum": {"$ref": "#/definitions/largeEnum" }
}
}
请查看屏幕截图中的错误
我需要使其从托管的json文件或REST端点远程运行。
答案 0 :(得分:0)
从您的评论看来,您认为$ id解析了一个远程引用。不过那是不正确的。 $id
定义了可用来引用当前模式的方式。
相反,您需要使用"$ref"
关键字来引用远程模式。
(验证程序是主动检索远程URL,还是要求您自己包含该模式的内容,取决于验证程序的实现。)
您可以这样做:
{
"title": "A rather large form",
"type": "object",
"properties": {
"noenum": {
"$ref": "http://www.mocky.io/v2/5c7ff2e833000000338484c2.json#/definitions/largeEnum"
}
}
}