Являются ли добытчики плохой идеей? - PullRequest
0 голосов
/ 08 марта 2019

В Angular, иногда при использовании *ngIf, вы должны проверить несколько условий, отображать элемент или нет.Иногда это становится немного сложнее для чтения.Является ли использование методов получения для таких случаев плохой идеей?Почему или почему нет?Следует ли их полностью избегать?

Я пытался сохранить условия в переменной ранее для удобства чтения, но у меня возникли проблемы (я проверял значения свойств класса), я не уверен, но думаю,это было связано с устаревшими данными, они не возвращали правильный результат, но когда я использовал геттеры, DOM обновлялся, когда что-то менялось, в основном я получал правильные результаты.

Что-то вроде:

В представлении:

<div [ngClass]="{ 'hidden' : isFlagUnchecked}"></div>

В классе компонента:

get isFlagUnchecked(): boolean { return !this.profileForm.get('flag').value; }

ИЛИ: (Пример сгруппированных условий, в основном поиск путей, чтобы их можно было еще более упростить илиинкапсулируется с более описательным именем, например, хранится в одной переменной, или если они должны быть)

<div *ngIf="!data['content_id'] || !data['content_name']" class="container"></div>

1 Ответ

0 голосов
/ 08 марта 2019

Измените свойство геттера на

get isFlagUnchecked(): boolean { console.log('Checking flag'); return !this.profileForm.get('flag').value; }

и посмотрите, как часто попадет этот добытчик.

Все зависит от того, что еще делает ваша страница и как часто запускается обнаружение изменений.

Всегда будет лучшая производительность, если иметь логическое свойство, которое обновляется с помощью обработчика события изменения на входе флага profileForm. Что-то вроде

<input name="flag" (change)="updateIsFlagUnchecked()">

Таким образом, логика запускается только при изменении поля формы, а не при постоянном обнаружении изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...