@angular/cli: 1.2.1 Please file a new issue if you are encountering a similar or related problem. A brief recap of the docs is that the HTML form entity creates a new NgForm instance (this is a built-in Angular directive, which uses form as the directive's selector). After the last refactor, we don't have any code in our forms to display the validation messages. ERROR in ng:Web/src/app/column-a-table/column-a-table.component.html (12,40): Property 'refresh' does not exist on type 'ColumnTableComponent', thnks @zpydee , this solution worked for me: } To make sure that all the validation messages look and behave the same way, we need to create a component, ControlErrorComponent. }, HTML part Child Component Making statements based on opinion; back them up with references or personal experience. This form results in the following form value. In web applications, the data is usually sent to the server. Validate is called on initialization so I just store its parameter. If this is not the case, the form creates a new form control instance for each radio button with a different name. La solucion mas facil es: formGroup.controls['any']['controls']. 'amount': new FormControl(null, So when we refer to FormGroups, this is what were talking about from here on out. While the above solution works for simple projects, this doesn't scale in larger projects because it has some problems: To obtain a better experience for our users, we have to come up with an abstraction layer(s). To implement this we require a custom Object to be returned from our validator should the values not match: We can condense this nicely onto a one line ternary, final code: Now, we import our validator, and add it to the second argument of the account level FormGroup: Everything is now hooked up, try out the code below for the working demo :). This should work for me, though not ideal. Trending is based off of the highest score sort and falls back to it if no posts are trending. This makes it feel like you're using the Web platform, which is always pleasant. If this is your first time building a template-driven form or if you just need a quick refresher, I would suggest starting by reading the Angular docs. Another benefit of Control Value Accessors is that a Control Value Accessor can also be implemented as an Angular directive. id="radio-2" myForm.get('').get('').hasError('required'), try this, it works for me So essentially, FormBuilder is just an abstraction/wrapper at this point.