html - Angular 2-skjema «Kan ikke finne kontroll»
Jeg prøver å bruke Angular 2 Forms for validering, men når jeg prøver å legge til mer enn én kontroll, ser det ut til at det bare blir ignorert. Jeg har fulgt mange forskjellige guider for å se hvordan alle andre gjør det, men ingen av de måtene ser ut til å fungere.
Det jeg har gjort, er dette i malen min:
<form [formGroup]="form" novalidate (ngSubmit)="save(form.valid)">
<div class="row" id="message-wrapper">
<label>Message</label>
<small [hidden]="form.controls.message.valid || (form.controls.message.pristine && !submitted)">
Message is required (minimum 10 characters).
<textarea
class="textarea-scaled"
type="text"
[(ngModel)]="campaign.message"
formControlName="message"
placeholder="This will be sent out by supporters with a URL back to this campaign">
</textarea>
</div>
<div class="row" id="promo-wrapper">
<label>Promotion: </label>
<small [hidden]="form.controls.promotion.valid ||(form.controls.promotion.pristine && !submitted)">
Promotion is required and should be between 10 and 100 characters
<textarea
class="textarea-scaled"
type="text"
[(ngModel)]="campaign.promotion"
formControlName="promotion"
placeholder="What would you like to be sent out in promotional messages?">
</textarea>
</div>
</form>
Så i komponenten min gjør jeg dette:
form: FormGroup;
constructor(private builder: FormBuilder,
private _dataservice: DataService) {
this.form = builder.group({
"message": ['', [Validators.required, Validators.minLength(10)]],
"promotion": ['', [Validators.required, Validators.minLength(10)]]
});
}
Men jeg får stadig en «Kan ikke finne kontroll 'promotion'»-konsollfeil...
All hjelp vil bli satt pris på!
Svar #1
Dette er kanskje ikke svaret på det opprinnelige spørsmålet, men dette kan være nyttig hvis du hoppet hit fra Google.
Du trenger å sjekke disse tingene.
Du må ha et "
name"-attributt for alle kontrollene som har[ngModel]Hvis du ekskluderer noen felt fra validering, legg deretter til
[ngModelOptions]="{standalone: true}"(huske den første regelen, du trenger fortsatt et "name")Sørg for at du har
formControlName-attributt for kontrollene du skal validere. (huske den første regelen)
Svar #2
Jeg prøvde å opprette en ny FormGroup i komponenten min. Jeg har importert ReactiveFormsModule fra angular/forms og lagt den til i app.module.ts imports.
men jeg fikk Kan ikke finne navnet 'FormGroup' og Kan ikke finne navnet 'FormControl' feil
Her er min komponent
export class SignupFormComponent {
form1 = new FormGroup({
username: new FormControl(),
password: new FormControl()
});
}
Å legge til importsetningen nedenfor i komponenten løste problemet mitt.
import { FormGroup, FormControl } from '@angular/forms';
Ikke svaret på spørsmålet ditt, men legger ut dette da det kan hjelpe noen som møter samme feil.
