Topic: using material select with angular reactive forms
Start your code here<div [formGroup]="parentForm"> <label *ngIf="label" [attr.for]="name" [translate]="label"></label> <select [name]="name" [formControlName]="name" class="form-control form-control-sm" (change)="onChange($event)" [ngClass]="{ 'is-invalid': parentForm.get(name).invalid && (isFormSubmitted || parentForm.get(name).touched || parentForm.get(name).dirty) }"> <option *ngFor="let item of items" [value]="item.value">{{ item.name }}</option> </select> </div>
Damian Gemza staff answered 7 years ago
<div class="row"> <div class="col-md-6 mx-auto my-5"> <form [formGroup]="form"> <mdb-select formControlName="select" [options]="optionsSelect" placeholder="Choose your option"></mdb-select> <label>Example label</label> </form> <p>Value: {{form.value.select}}</p> </div> </div>
import { FormGroup, FormControl } from '@angular/forms'; @Component({ selector:'app-root', templateUrl:'./app.component.html', styleUrls: ['./app.component.scss'] }) export class AppComponent implements OnInit { form=newFormGroup({ select:newFormControl() }); optionsSelect:Array<any>; ngOnInit() { this.optionsSelect= [ { value: '1', label: 'Option 1' }, { value: '2', label: 'Option 2' }, { value: '3', label: 'Option 3' }, ]; } }
Shajee Lawrence pro commented 6 years ago
Does not work... ERROR Error: No value accessor for form control with name: 'select' I am getting this problem since morning and I have spend already 6 hours - I do not see enough good documentation either on reactive forms. Am I missing something? Is there a way I can send you the screenshot of the code and the error please?Arkadiusz Idzikowski staff commented 6 years ago
Dear Shajee Lawrence, Please make sure you added ReactiveFormsModule to your app.module file. If it still won't work please paste here your html, ts and app.module code. Best, ArekShajee Lawrence pro answered 6 years ago
The ReactiveFormsModule was already added to the app.module file. After lot of googling, it started to work after I placed ngDefaultControl on the element. Perhaps you may want to explain why that is necessary - for the sake of other users.
I also have another suggestion, you should start making more components in the pro version at least. I was in need of a dualList and I had to make my own. Do you have a roadmap on the components that you are planning in the pro version? Just wanted to check before I buy. Thanks !!
Damian Gemza staff commented 6 years ago
Dear Shajee, Unfortunately, we don't have a roadmap which presents components which will be added in future releases. ngDefaultControl directive is needed on components which overwrites the default HTML input element. This directive is needed in case of using Reactive Forms features, or Forms Modules features. We take a look at Material Select, what's exactly wrong there. Best Regards, DamianFREE CONSULTATION
Hire our experts to build a dedicated project. We'll analyze your business requirements, for free.
Resolved
- User: Pro
- Premium support: No
- Technology: MDB Angular
- MDB Version: -
- Device: -
- Browser: -
- OS: -
- Provided sample code: Yes
- Provided link: No