La función booleana de Typescript debe devolver un valor
Tengo la siguiente función booleana en Typescript:
checkRiskValues(): boolean {
this.controlsName.forEach((item) => {
this.threatForm.get(item)!.valueChanges.subscribe(value => {
this.valueControlArray.push(this.threatForm.get(item)!.value);
if (this.valueControlArray.indexOf(true) > -1)
return true;
else
return false
});
});
}
El método parece tener un error, la función debe devolver un valor. Lo sé, pero no estoy seguro de cómo implementar esta declaración verdadera/falsa fuera del alcance de foreach.
Si llamo a la sentencia if/else fuera del bucle foreach, el resultado siempre es falso porque
if (this.valueControlArray.indexOf(true) > -1)
está vacío..
EDITAR
He eliminado la función checkRiskValues() y añadido la lógica completa en el método ngOnInit(), y también he agregado la variable valueControl que mantiene un valor verdadero/falso y se pasa a otra función. Gracias a todos... Esta es mi solución:
ngOnInit() {
this.controlsName.forEach((item) => {
this.threatForm.get(item)!.valueChanges.subscribe(value => {
this.valueControlArray.push(this.threatForm.get(item)!.value);
if (this.valueControlArray.indexOf(true) > -1) {
this.valueControl = true;
}
else {
this.valueControl = false;
}
});
});
}
Respuesta #1
Esta es mi propuesta:
checkRiskValues(): boolean {
return setRiskValues().indexOf(true) > -1;
}
setRiskValues(): Array<any> {
let values = [];
this.controlsName.forEach((item) => {
this.threatForm.get(item)!.valueChanges.subscribe(value => {
values.push(this.threatForm.get(item)!.value);
});
});
return values;
}
De esta manera estás:
- Construyendo tu arreglo
- Comprobando si existe un valor positivo (si es verdadero y está presente, devolverá el índice)
