I am trying to implement a model-driven form in Angular 2. The structure of my data model is as follows:
archive (FormGroup)
name (FormControl)
description (FormControl)
connection (FormGroup)
url (FormControl)
authentication (FormGroup)
username (FormControl)
password (FormControl)
Within this data model, the top-level name is required but the description field is optional. I can apply a required validator to name, and omit a validator from description.
For the connection, I want it to be optional but if a connection is present its URL becomes required. Similarly for the authentication model of the connection: It is optional but if present the username and password would be required.
I am trying to understand how to set up validators to enforce these rules. I have tried just omitting any validators from the connection form group, but that seemed to be requiring me to have a connection. I've seen online tutorials explaining how to implement custom validation on a nested form groups but nothing that describes how to make the entire nested formgroup optional.
Is there a straightforward way to implement this model with Angular 2 FormGroup?