If you use the dev tools to select one of the inputs inside of your form, you'll notice these classes NG untouched, NG pristine, and NG valid. Let's focus on NG valid, because if I change this input to be invalid, this field is required, you'll see that this now has NG invalid instead of NG valid.
What that allows us to do is to style these fields with our own custom styles based on those classes. If I add a style of NG invalid and I say it's a border, it's a three pixel solid red, and I hit save. You'll see now we're green. If I delete this, this field becomes red.
If I go ahead and duplicate that so we have an NG valid class, we'll say this one is green and I hit save, you'll see it starts as green. In fact, they're both green. If I delete this, this one turns red and this one's green.
Each input inside of your form is going to provide these convenient validity classes you can use, to simply create your own CSS classes and apply a style based on whether it's valid, or based on whether it's invalid.