Разве плохо связывать свойства / функции с переменными в Angular 4+? - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь понять, является ли плохой практикой привязка к функциям в угловых шаблонах против привязки к переменным / выражениям.Имеет ли это какое-то значение?

Например:

Опция 1

<span *ngIf="!!myForm.value && !!myform.errors && !!myForm.errors['required']" ...

против

Опция 2

HTML
<span *ngIf="requiredError" ...

TS
get requireError() {
    return !!this.myForm.value && !!this.myform.errors && !!this.myForm.errors['required'];
}

Насколько я понимаю, нет никакой разницы, оба выражения будут продолжать выполняться, и в этом случае я всегда буду переходить к варианту 2. Однако мне постоянно говорят, что привязка свойства / функции плохая, так как angular добавляет наблюдатель, а функция продолжает получатьвыполняется все время.Насколько я понимаю, это также относится к варианту 1. Я был бы очень признателен за некоторые статьи или ссылки на документацию, описывающую это, не могу найти много онлайн.

В частности, при использовании valid, touch, dirty (которые уже являются get свойствами в angular), я не вижу, как они будут отличаться, если angular каким-то образом волшебным образом их не обрабатывает.

Я вижу, что в руководстве по стилю есть краткое упоминание об этом: https://angular.io/guide/styleguide#put-presentation-logic-in-the-component-class

1 Ответ

0 голосов
/ 27 сентября 2019

Мое мнение, мне кажется, лучше так:

HTML:

<span *ngIf="isError"></span>

TS:

ngOnInit() {
   this.isError = this.requireError();
}

Почему?Потому что здесь функция будет запрашиваться только один раз.И в вашей версии, в первом варианте подходит, но в шаблоне будет много мусора.Во втором варианте функция может запрашиваться несколько раз.

...