i am trying to pass ngModel in child component to displaying error from common component.
It giving error like. Template parse errors:No provider for NgControl.
can any one please check the code and let me know what i am missing.
Parent component
<div> <h2>Hello {{name}}</h2> <form #countryForm="ngForm"> <div class="form-group row"> <label for="txtCountryName" class="col-sm-3 col-form-label">Country Name</label> <div class="col-sm-9"> <input type="text" [(ngModel)]="name" ngModel #countryName="ngModel" name="name" class="form-control" id="txtCountryName" placeholder="Country Name" required minlength="5" maxlength="15"> <app-error-message [formControl]="countryName"></app-error-message> </div> </div> </form> </div> Child component
@Component({ selector: 'app-error-message', template: `<ng-container *ngIf="formControl"> <div [hidden]="(formControl.valid || formControl.pristine) && (formControl.errors == null || formControl.errors.invalid == null)" class="alert alert-danger"> {{GetValidationMessage()}} </div> </ng-container>` }) export class ErrorMessageComponent { @Input() public formControl: any = null; public GetValidationMessage() { let errorMessage: string = ""; if (this.formControl.errors) { if (this.formControl.dirty || this.formControl.touched) { if (this.formControl.errors.required != null) { errorMessage = "This field is required."; } if (this.formControl.errors.minlength != null) { errorMessage += "This field must be 8 characters long, we need another " + (this.formControl.errors.minlength.requiredLength - this.formControl.errors.minlength.actualLength) + " characters"; } } if (this.formControl.errors.invalid != null) { errorMessage += this.formControl.errors.errorMessage; } } return errorMessage; } }
formControlin your child component?