Formas reactivas de validación de ASYNC angular con ngrx -- angular campo con ngrx campo con angular-reactive-forms camp Relacionados El problema

async validation reactive forms angular with ngrx


1
vote

problema

Español

Necesito validar si el usuario existe en el estado de mi solicitud. En mi solicitud estoy usando NGRX y a través de un selector, quiero validar si existe el usuario.

¿Cómo puedo hacer esto?

No puedo validar esta manera, ¿qué estoy haciendo mal?

  return this._formBuilder.group({   id: ['', this._existUser()],   dateStart: ['', Validators.required],   dateEnd: ['', Validators.required] })    private _existUser(): AsyncValidatorFn {     return (control: AbstractControl): Promise<{ [key: string]: any } | null> | Observable<{ [key: string]: any } | null> => {       const userId = control.value;       return this._store.select(usersSelectors.getUserById, { id: userId}).pipe(         debounceTime(500),         take(1),         map(value => {           // Not entering the map...           return !!value ? { invalid: true } : null;         })       )     };   }   

selectores.ts:

  export const getUserById = createSelector(     selectEntities,     (entities, props): any => {         return entities[props.id];     } );   
Original en ingles

I need to validate if the user exists in the state of my application. In my application I'm using ngrx and through a selector I want to validate if the user exists.

How can I do this?

I'm not able to validate this way, what am I doing wrong?

return this._formBuilder.group({   id: ['', this._existUser()],   dateStart: ['', Validators.required],   dateEnd: ['', Validators.required] })    private _existUser(): AsyncValidatorFn {     return (control: AbstractControl): Promise<{ [key: string]: any } | null> | Observable<{ [key: string]: any } | null> => {       const userId = control.value;       return this._store.select(usersSelectors.getUserById, { id: userId}).pipe(         debounceTime(500),         take(1),         map(value => {           // Not entering the map...           return !!value ? { invalid: true } : null;         })       )     };   } 

selectors.ts:

export const getUserById = createSelector(     selectEntities,     (entities, props): any => {         return entities[props.id];     } ); 
        
       
       

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

El problema es que definió esto._ExistUser () Como segundo parámetro que es para validadores u opciones, los validadores de ASYNC deben pasar como tercer parámetro

  return this._formBuilder.group({   id: ['', [], this._existUser()],   dateStart: ['', Validators.required],   dateEnd: ['', Validators.required] })   

https://angular.io/api/forms/formcontrol

 

The problem is that you defined this._existUser() as second parameter which is for validators or options, async-validators have to be passed as third parameter

return this._formBuilder.group({   id: ['', [], this._existUser()],   dateStart: ['', Validators.required],   dateEnd: ['', Validators.required] }) 

https://angular.io/api/forms/FormControl

 
 

Relacionados problema

0  Primeng Angular MultisElect en formas reactivas: mapeo de datos seleccionados de Back End durante la operación de edición  ( Angular primeng multiselect in reactive forms mapping selected data from back ) 
Estoy usando Primeng Library para mi proyecto angular. Estoy teniendo problemas para asignar mis datos seleccionados de Backend cuando edito algo. Los datos s...

3  Componente Angular Primeng Dropdown en formas reactivas - Valor inicial  ( Angular primeng dropdown component in reactive forms initial value ) 
Uso del componente desplegable de Primeng, estoy tratando de inicializar el menú desplegable con el valor inicial sin éxito, estoy usando un enfoque reactivo....

5  La longitud de la formarray no se reinicia por form.reset ()  ( Formarray length does not reset by form reset ) 
Estoy trabajando en el enfoque de los datos de las formas angulares, agregué controles de formulario dinámicamente a la formarray, utilicé Form.reset () para ...

3  ¿Hay alguna forma de restablecer el resto del elemento de la casilla de verificación al hacer clic en 'Ninguna de la opción anterior' en Angular?  ( Is there a way to reset the rest of the checkbox item when clicking none of the ) 
He estado luchando con formas reactivas con las casillas de verificación. Si no se selecciona ninguno de los elementos, el botón Enviar debe estar deshabi...

0  Angular 6: ¿Cómo intercalar el selector de calendario / fecha con forma?  ( Angular 6 how to intergarte calender date picker with form ) 
Tengo dos divs uno contiene un selector / calendario de fecha que permite al usuario seleccionar una fecha que desean, la segunda contiene el formulario con c...

1  Convertir el valor de las formas reactivas en el objeto modelo  ( Convert reactive forms value into model object ) 
Estoy usando Reactive Forms y quiero convertir el valor de formGroup en el objeto de clase de modelo. Por favor, dame algunas soluciones para ello. y tamb...

133  Cómo deshabilitar una entrada en angular2  ( How to disable a input in angular2 ) 
en TS is_edit = true Para deshabilitar ... <input [disabled]="is_edit=='false' ? true : null" id="name" type="text" [(ngModel)]="model.name" formControlN...

0  Formarray de formas reactivas angulares: no se puede asignar el segundo elemento de Formroup  ( Angular reactive forms formarray cannot assign second formgroup element ) 
Estoy luchando con formas reactivas y formarray anidada. Estoy en el proceso de desarrollar la aplicación para mostrar a los clientes con múltiples direccione...

1  Acceso a FORMARRAY Dentro de Formulario Nested, Angular6  ( Accessing formarray inside nested formgroup angular6 ) 
Tengo una forma reactiva simple ngOnInit() { this.outerForm = this._formBuilder.group({ firstFormGroup: this._formBuilder.group({ nserN...

0  Obtenga los primeros valores de una forma reactiva hecha dinámicamente  ( Get first values of an dynamically built reactive form ) 
Tengo un componente de formulario donde construyo una forma dinámica con valores de una llamada de servicio. Que funciona correctamente Ahora quiero mostrar...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos