Musiałem pokazać transparent walidacji na górze pokazując wszystkie błędy sprawdzania poprawności formularza na przedstawienia i tylko na przedstawienia, które brzmi jak może to, co staraliśmy się zrobić .
Aktualnie program ng2 beta 17 i framework nie uniemożliwiają przesłania nieprawidłowego formularza. Przeglądarka uniemożliwi walidację html, taką jak wymagana przed przesłaniem, ale wszelkie inne niestandardowe weryfikatory nie zapobiegają przesyłaniu formularza.
Moje podejście polegało na tym, że baner podsumowujący sprawdzanie poprawności obsługiwał formularz przesłany z wywołania zwrotnego do rodzica po pomyślnym zakończeniu. Jeśli formularz jest nieprawidłowy, baner wyświetla podsumowanie i nie oddzwoni.
Konfiguracja Formularz
<form (ngSubmit)="validationSummary.submit()" [ngFormModel]="myForm">
<div #validationSummary form-validation-summary [form]="myForm" [validSubmitCallback]="validSubmitCallback"></div>
...
<button type="submit" value="SaveButton" class="Button">Save</button>
</form>
strona z formularzem Podsumowanie
export class SomeComponent implements OnInit {
...
public validSubmitCallback: Function;
ngOnInit() {
this.validSubmitCallback = this.myFormSubmit.bind(this);
}
myFormSubmit() {
alert("a valid form was submitted");
}
}
Validation
@Component({
selector: '[form-validation-summary]'
...
export class FormValidationSummary {
@Input() public form: ControlGroup;
@Input() public validSubmitCallback: Function;
...
submit() {
if (this.form.valid) {
this.validSubmitCallback();
} else {
this.formSubmitted = true;
}
}
}
związane z ding przesłać na formularzu: https://github.com/angular/angular/issues/2960
CSS jest znaczników i nie mogą być wykorzystywane do logiki. Możesz napisać JS lub TS, aby sprawdzić obecność tych klas na elementach, ale byłoby to ponowne wymyślenie koła, gdy formanty kątowe już to robią. – SnareChops
@SnareChops W angularjs jest formant kontrolny. $ Submitted ... czy jest coś takiego w angular2? –
W angular2, jeśli formularz nie jest prawidłowy, nigdy nie "Prześlij". Tak więc formularz nigdy nie będzie miał statusu "przesłany". Istnieje świetny przewodnik [here] (https://angular.io/docs/ts/latest/guide/forms.html), który bardzo szczegółowo opisuje formy kątowe. Polecam przeczytać całą stronę, od góry do dołu. To wyjaśni, jak zrobić wszystko, co proponujesz. – SnareChops