У меня было это условие в группе форм:
if((age>17 && (this.frType=="Infant"))
|| (age>40 && this.frType=="Grandchild")
|| (age<=5 &&
(this.frType!="Child"
|| this.frType!="Infant"
|| this.frType!="Grandchild" || this.frType!="Cousin")))
Он содержит 3 основных условия:
- Если возраст 17 лет, нельзя установить
infant
- Если человеку больше 40, он не может быть
grandchild
- Если человеку меньше 5 лет, он должен быть
child
,infant
,grandchild
илиcousin
.
Если одно из этих условий выполнено, я отправлю сообщение об ошибке.
Я получаю следующую ошибку:
[ts] Это условие всегда будет возвращать значение «истина», поскольку типы «Ребенок» и «Младенец» не перекрываются. [2367]
По этой части if
условия`:
|| this.frType!="Infant" || this.frType!="Grandchild" || this.frType!="Cousin")))
Я использую точное условие в другом компоненте, и он не показывает ошибки.
if((age>17 && (this.family_relation_type=="Infant"))
|| (age>40 && this.family_relation_type=="Grandchild")
|| (age<=5 &&
(this.family_relation_type!="Child" ||
this.family_relation_type!="Infant" ||
this.family_relation_type!="Grandchild" ||
this.family_relation_type!="Cousin")))
Вот как я рассчитываю возраст по обоим компонентам:
let timeDiff = Math.abs(Date.now() - this.formGroup.controls['dob'].value);
let age = Math.floor((timeDiff / (1000 * 3600 * 24))/365);