trato de vincular el valor en ValidationErrors.
tengo este metodo:
isUniqueEmail(control: FormControl): ValidationErrors { if (control.value != null) { console.log(control.value) if(control.value == this.foundEmail){ console.log("found one"); return {isUniqueEmail: true} }else{ return null; } } } este método verifica si control.value (escribir correo electrónico) es igual al correo electrónico almacenado en la variable global this.foundEmail , entonces tenemos un correo electrónico duplicado.
Mi problema es: puedo recuperar datos de foundEmail en este método porque este método es privado.
este método se encuentra dentro de la clase de exportación exampleComponent implementa OnInit.
Error: ERROR TypeError: Cannot read properties of undefined (reading 'foundEmail')
Pero compruebo que tengo datos en foundEmail
La función de validación se llama desde FormControl , por lo que su contexto no está vinculado a la clase en la que está definiendo el método. Debe enlazar manualmente isUniqueEmail() a this .
Dos opciones:
Usa bind() cuando definas FormControl:
name: new FormControl("", [ this.isUniqueEmail.bind(this), ]),Defina su validador como función de flecha :
isUniqueEmail = (control: FormControl) => { if (control.value != null) { console.log(control.value) if(control.value == this.foundEmail){ console.log("found one"); return {isUniqueEmail: true} }else{ return null; } } }