#angular #typescript
Вопрос:
Я пытаюсь назначить класс на основе двух объектов.
lt;div class="col" [ngClass]="{'d-none':item.FinancialDetails?.length===0 || item.FinancialDetails===undefined || itemFinancials===false }"gt; lt;app-financials [financials]="item.FinancialDetails"gt;lt;/app-financialsgt; lt;/divgt;
Здесь, как вы можете видеть, для одного и того же объекта FinancialDetails я сейчас проверяю два условия, потому что длина сама по себе работает не так, как ожидалось.
Но есть ли какой-либо способ объединить эти первые два условия вместе? Я имею в виду длину и неопределенное условие.
Комментарии:
1. Может быть, вы имеете в виду это?
[ngClass]="{'d-none': !(item.FinancialDetails amp;amp; item.FinancialDetails.length gt; 0) || itemFinancials===false }"
2. Извините, но опять же есть два условия для одного и того же объекта FinancialDetails, не так ли? Я подумал, есть ли какой-либо способ сделать это одним условием. Например, проверка неопределенности и отсутствия значения в массиве.
3. Или даже кратчайший путь, такой как этот:
[ngClass]="{'d-none': !(item.FinancialDetails?.length gt; 0) || itemFinancials===false }"
. С?.
помощью этого предотвращается сбой при доступеlength
из-заitem.FinancialDetails
wasnull
илиundefined
. Отмените его, чтобы проверить , возвращается ли пустой массивnull
илиundefined
true
.4. Объект, возможно, «неопределен» при попытке таким образом
Ответ №1:
Используйте силу Безопасного оператора ( ?
). Попробуйте код ниже:
lt;div class="col" [ngClass]="{'d-none': item?.FinancialDetails?.length === 0 || itemFinancials===false }"gt; lt;app-financials [financials]="item.FinancialDetails"gt;lt;/app-financialsgt; lt;/divgt;
Только изменение, имеющее одно условие — item?.FinancialDetails?.length === 0