Angular -6- JSON Ошибка формы схемы: Ошибка getControl вложенных массивов: невозможно найти элемент «0» в FormGroup - PullRequest
3 голосов
/ 24 февраля 2020

Здравствуйте. В настоящее время я работаю над проектом, в котором используется JSON форма схемы

При использовании макета для вложенных массивов, имеющих рекурсивные ссылки на схему

Вложенные массивы Ошибка getControl: невозможно найти элемент «0» в FormGroup.

Пример: https://stackblitz.com/edit/angular-c1mzvk

Рекурсивные ссылки Пример: https://hamidihamza.com/ajsf/?set=ng-jsf&example=ng-jsf-deep-ref&framework=bootstrap-4&language=en

Если я не предоставляю макет или не устанавливаю макет = ['*'], форма работает отлично. Если я его предоставлю, он не сможет отобразить форму

Не повезло с Github , вопрос , либо

1 Ответ

0 голосов
/ 29 февраля 2020

Вот ссылка на stackbiltz: https://stackblitz.com/edit/angular-zvsitp

Я изменил схему на приведенный ниже код и не вижу ошибки в консоли.

schema = {
$schema: "http://json-schema.org/draft-07/schema#",
type: "object",
title: "Product Variant",
additionalProperties: false,
definitions: {
  int: {
    type: "number",
    minimum: 0,
    maximum: 10
  },
  string: {
    type: "string",
    minLength: 0
  },
  valueItem: {
    type: "object",
    properties: { value: { $ref: "#/definitions/int" } }
  },
  valueItemArray: {
    type: "array",
    items: { $ref: "#/definitions/valueItemArray" }
  },
  dtoArray: {
    type: "array",
    items: { $ref: "#/properties/staffLanguageLevelDto" }
  },

},
properties: {
  staffLanguageLevelDto: {
    type: "object",
    properties: {
      id: { $ref: "#/definitions/int" },
      staffId: {
        allOf: [
          { $ref: "#/definitions/int" },
          { maximum: 5, title: "staffId (overriden maximum)" }
        ]
      },
      languageId: {
        allOf: [
          { $ref: "#/definitions/valueItem" },
          { title: "languageId (object with custom title)" }
        ]
      },
      languageLevelId: { $ref: "#/definitions/int" },
      languageName2: {
        allOf: [
          { $ref: "#/definitions/string" },
          {
            default: "ole",
            maxLength: 3,
            title: "languageName2 (custom default & maxLength)"
          }
        ]
      },
      languageLevelName: { $ref: "#/definitions/dtoArray" }
    }
  }
}
};
...