Skip to content

Latest commit

 

History

History
47 lines (36 loc) · 1.09 KB

07-DependentFields.md

File metadata and controls

47 lines (36 loc) · 1.09 KB

Dependent Fields

If the validity of one field depends on the value of another, use [@field.deps] attribute to mark the relation.

type input = {
  a: [@field.deps b] string,
  b: string,
};

In the case above, it states: "If the value of field a has changed, please, re-validate field b as well".

A real-world use-case is a form that updates a password:

type input = {
  oldPassword string,
  newPassword: [@field.deps newPasswordConfirmation] string,
  newPasswordConfirmation: string,
};

When newPassword field is updated, newPasswordConfirmation field should be revalidated as well since its validity depends on the newPassword value.

If you need to re-validate multiple fields, provide a tuple:

type input = {
  a: [@field.deps (b, c)] string,
  b: string,
  c: int,
};

If one of the dependent fields is a field of collection, define it like this:

type input = {
  title: [@field.deps author.name] string,
  authors: [@field.collection] array(author),
}
and author = {name: string}

Next: Metadata →