What's the relation between schema and form in angular-schema-form?
To try to address the basic question:
What is the relation between schema and form?
To put things into simple terms, perhaps it is easiest to think of it like this. To create the form, you have three pieces of JSON:
The JSON containing the actual data being presented through your form. This is the
model
.The JSON
schema
. This describes the structure of themodel
. To give an extremely simple example of the relationship betweenmodel
andschema
, imagine your actual data (yourmodel
) describes a person in terms of their sex and age, such as{sex: female, age: 32}
. The role of theschema
is to describe the structure of the model, so in this case it would describe that there should be asex
property of string type whose values can only bemale
orfemale
, and that there is anage
property, and so on. To be able to present a form that is populated using yourmodel
data, it simply has to have aschema
to construct the form in the first place.The JSON
form
is something that I think of as being optional. You must have it, but it can simply contain"*"
, which tellsangular-schema-form
to just build the form automatically based on the schema. In this case, the library will build the form based entirely on the schema and using default settings as described in the documentation. But what you can do, if you want to, is use theform
object to describe how you want your form to be structured.
Here's a very crude and very simple example of the flexibility the form
object gives you:
Taking the person
object example above, if you don't make use of the form
object (i.e. it just contains "*"
) then angular-schema-form
will build you a form based on the schema. It would therefore have input fields for sex
and age
. Those fields may, or may not, be in the format, or order, or have other properties that you want. You may then optionally use the form
object to instruct angular-schema-form
how you want it to construct the form. For instance, you could use the form
to make it so that the form only contains a field for age
but not sex
.
So the model
is your data, and the schema
describes the structure of that data. In simplistic terms, the form
provides a further layer of mapping and configuration to your form, overriding the default form that would be created based on the schema
alone.
Does that help?