Réponses:
Utiliser (eventName)
pour lors de la liaison d'un événement à DOM, ()
est essentiellement utilisé pour la liaison d'événements. Utilisez également ngModel
pour obtenir une liaison bidirectionnelle pour la myModel
variable.
Balisage
<input type="text" [(ngModel)]="myModel" (blur)="onBlurMethod()">
Code
export class AppComponent {
myModel: any;
constructor(){
this.myModel = '123';
}
onBlurMethod(){
alert(this.myModel)
}
}
Alternative (pas préférable)
<input type="text" #input (blur)="onBlurMethod($event.target.value)">
Pour que le formulaire piloté par modèle déclenche la validation blur
, vous pouvez passer le updateOn
paramètre.
ctrl = new FormControl('', {
updateOn: 'blur', //default will be change
validators: [Validators.required]
});
Vous pouvez également utiliser l' événement (focusout) :
Utiliser (eventName)
pour lors de la liaison d'un événement à DOM, ()
est essentiellement utilisé pour la liaison d'événements. Vous pouvez également utiliser ngModel
pour obtenir une liaison bidirectionnelle pour votre model
. Avec l'aide de ngModel
vous pouvez manipuler la model
valeur de variable dans votre fichier component
.
Faites cela dans un fichier HTML
<input type="text" [(ngModel)]="model" (focusout)="someMethodWithFocusOutEvent($event)">
Et dans votre fichier (composant) .ts
export class AppComponent {
model: any;
constructor(){ }
someMethodWithFocusOutEvent(){
console.log('Your method called');
// Do something here
}
}
someMethodWithFocusOutEvent
le programme entre dans une boucle car l'alerte fait perdre le focus au champ, y a-t-il un moyen de résoudre ce problème?
HTML
<input name="email" placeholder="Email" (blur)="$event.target.value=removeSpaces($event.target.value)" value="">
TS
removeSpaces(string) {
let splitStr = string.split(' ').join('');
return splitStr;
}
/*for reich text editor */
public options: Object = {
charCounterCount: true,
height: 300,
inlineMode: false,
toolbarFixed: false,
fontFamilySelection: true,
fontSizeSelection: true,
paragraphFormatSelection: true,
events: {
'froalaEditor.blur': (e, editor) => { this.handleContentChange(editor.html.get()); }}
Voici la réponse proposée sur le repo Github:
// example without validators
const c = new FormControl('', { updateOn: 'blur' });
// example with validators
const c= new FormControl('', {
validators: Validators.required,
updateOn: 'blur'
});
Github: feat (Forms): ajouter l'option updateOn blur à FormControls
Essayez d'utiliser (focusout) au lieu de (flou)