Je fais des recherches à ce sujet, mais je ne trouve toujours pas ce que je cherche. J'ai une forme et je voudrais capturer l'événement touché. Mon code ressemble à ceci: Si je devais entrer une valeur, je peux consoler la valeur, mais je veux pouvoir afficher un message comme "le champ a été touché" quand je Touchez un champ. p> p>
4 Réponses :
Si vous utilisez https://angular.io/api/forms/abstractControl P>
Il possède certaines propriétés que vous pouvez utiliser pour déterminer si l'entrée était réactifforms code> chèque docs: p>
touchée code>. p>
J'ai déjà utilisé ce lien, mais ce n'est toujours pas clair pour moi comment capturer l'événement touché de la composante
Vous voudrez peut-être regarder la classe CSS touchée NG et essayer de le faire avec cela. Vous pouvez l'essayer avec une combinaison de cela et la référence de formulaire où vous pouvez vérifier si l'état du formulaire. Je me souviens d'avoir utilisé cela pour une validation de formule. Ce n'est peut-être pas ce que vous essayez de faire acheter cela pourrait vous indiquer dans la bonne direction.
dans mon CSS: p>
Je veux capturer l'événement touché du composant et non de CSS ou de la vue
Désolé pour ça
@Component({
selector: 'my-custom-form-component',
templateUrl: './custom-form-component.html',
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: MyCustomFormComponent,
multi: true
}]
})
export class MyCustomFormComponent implements ControlValueAccessor, DoCheck {
private control: AbstractControl;
private pristine = true;
ngDoCheck (): void {
if (this.pristine !== this.control.pristine) {
this.pristine = this.control.pristine;
if (this.pristine) {
console.log('Marked as pristine!');
}
}
}
}
This is what I found. This should work for touch also.For more information https://github.com/angular/angular/issues/17736
Pouvez-vous fournir une démonstration en direct sur ce que votre code fait? Ce n'est toujours pas clair pour moi. Merci
Vous pouvez utiliser des événements d'entrée pour appeler une fonction lorsque l'utilisateur a cliqué sur un champ, entré une valeur, appuyez sur la touche Entrée ou sur le champ, en fonction de ce que vous voulez spécifiquement.
<input #textfield
(keyup.enter)="onEnter(textfield.value)"
(blur)="onBlur(textfield.value)"
>
onEnter(value) {
console.log("User entered this: ",value);
}
onBlur(value) {
console.log("User existed field: ",value);
}
@Stephene R. Smith, cela ne gère pas l'événement touché sur un champ
Ma compréhension est qu'un champ est «touché» si un utilisateur est entré et sortit un champ sans modifier sa valeur, appelez donc une fonction surblur vous avertit lorsque le contrôle a perdu la mise au point et vous pouvez vérifier son drapeau «sale» pour voir si La valeur a été modifiée.