Hola, hallamos la solución a tu pregunta, has scroll y la verás aquí.
Solución:
Considere la expresión independiente:
(this.frType!="Child" || this.frType!="Infant")
Si frType
es Child
la segunda parte será truepor lo que la expresión se evaluará como true
. Si frType
es Infant
entonces la primera parte será truepor lo que la expresión se evaluará como true
. Si frType
es ninguno de los dosChild
ni Infant
entonces la primera parte será truey la expresión, de nuevo, se evaluará como true
– la lógica es defectuosa, siempre se resolverá true
.
(Si agrega más ||
condiciones para Grandchild
y Cousin
sigue ocurriendo lo mismo: siempre se resolverá true
)
Cualquiera de los usos &&
en lugar de:
|| (age<=5 && (
this.frType!="Child"
&& this.frType!="Infant"
&& this.frType!="Grandchild"
&& this.frType!="Cousin"
))
O, para que la lógica sea más fácil de seguir, podría considerar usar un arrayy use .includes
:
const kidsFiveAndUnder = ['Child', 'Infant', 'Grandchild', 'Cousin'];
// ...
|| (age <= 5 && !kidsFiveAndUnder.includes(this.frType))
Tal vez pueda ayudar a alguien con esto.
En mi caso, el error fue provocado por:
*ngIf="fooArray.length === 0"
así que lo modifiqué para que sea:
*ngIf="fooArray.length < 1"
No tiene sentido para mí, pero funciona.