J'ai une forme angulaire réactive. Lorsque la page Charge le formulaire est déjà vérifié pour les erreurs.Pourquoi un formulaire angulaire est-il validé avant même que j'appuie sur le bouton Soumettre?
J'essaie d'utiliser une directive scroll to error afin de faire défiler et de me focaliser sur la div d'erreur mais le formulaire ne va jamais là il est déjà validé.
import { ElementRef, HostBinding, Input } from '@angular/core';
import { Directive } from '@angular/core';
@Directive({
selector: '[scrollTo]'
})
export class ScrollDirective {
constructor(private elRef:ElementRef) {}
@HostBinding('hidden') isError:boolean = false;
@Input() set scrollTo(cond) {
console.log(cond);
this.isError = cond;
if(cond) {
this.elRef.nativeElement.scrollIntoView();
this.elRef.nativeElement.focus();
}
}
}
C'est là je vérifie l'erreur, mais il est déjà vérifié et si je mets l'scrollTo en dehors il défile au premier.
<div class="row">
<div class="col-md-12">
<span *ngIf="user.get('email').touched && !user.get('email').valid && !user.get('email').pristine">
<small [scrollTo] = "user.get('email').valid">Invalid email</small>
</span>
</div>
</div>
Mise à jour
Maintenant, je suis en utilisant comme cette
<div class="col-md-4" [scrollTo] = "user.get('age').valid">
<md-input-container>
<input mdInput type="number" formControlName="age" placeholder="Age" validate-onblur>
</md-input-container>
</div>
Les choses est que le soumettre le formulaire montrera erreur de validation et je veux la mise au point et le défilement pour vous déplacer Là ? aidez s'il vous plaît?
de sorte que vous voulez que je le mets au-dessus de l'entrée? – INFOSYS
que dosent semblent fonctionner en cliquant sur le bouton soumettre, mis à jour la question en l'utilisant comme – INFOSYS
Avez-vous modifié la directive pour mettre l'accent sur le bon élément? Si vous partez comme le div est le nativelement mais il ne peut pas recevoir le focus. Probablement avec un nouvel attribut, vous pouvez passer la référence d'entrée – Vega