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;
}
}