Búsqueda de sitios web

typescript - Cómo comprobar si algún control en un formulario reactivo tiene valor en Angular 2


Tengo un formulario en el que hay 4-5 tipos diferentes de controles. Con cierta acción del usuario, necesito saber si alguno de los controles tiene algún valor, y esto puede ocurrir en cualquier estado del formulario, ya sea limpio o modificado. No puedo depender de los estados del formulario para esto. Ni siquiera puedo hacer un bucle a través de él, ya que this.myForm.controls no es un tipo de arreglo. Además, this.myForm.value siempre es un 'objeto', aunque no haya valores en los controles.

Aquí está el código de creación del formulario, si eso ayuda:

this.searchForm = this.fb.group({
            'ids': this.fb.control([], multipleInputValidator(2)),
            'locationName': this.fb.control([], Validators.minLength(2)),
            'accountCodes': this.fb.control([], multipleInputValidator(2)),
            'regionCodes': this.fb.control([], multipleInputValidator(2)),
            'city': this.fb.control([], Validators.minLength(2)),
            'typeIds': this.fb.control([]),
            'centreIds': this.fb.control([]),
            'siteCodes': this.fb.control([]),
            'statusCode': this.fb.control([]),
            'from': this.fb.control([]),
            'to': this.fb.control([])
        });

Respuesta #1

console.log(!!this.myForm.get('mycontrol').value);

Respuesta #2

Aquí hay una forma rápida en la que puedes hacer esta verificación usando Object.keys().

Object.keys(this.searchForm.value).some(k => !!this.filterForm.value[k])

Esto verificará las propiedades en el objeto value que representa el estado de tu formulario, y devolverá true si alguna de esas propiedades es verdadera, es decir, tiene un valor.

Artículos relacionados