Angular: трубы и методы в модели

Я использую функции в моделях, как в этом примере:

//user.madel.ts
class User {
    getFullname () {
        return this.firstname + '  ' + this.lastName;
    }
}

// in html I can do this:
<span> {{ user.getFullName() }} <span>

Это правильно или я должен использовать трубы?


person Bilel Noômene    schedule 16.12.2017    source источник
comment
с объектно-ориентированной точки зрения модель должна иметь частные привилегии для доступа и изменения своих собственных свойств.. каналы больше предназначены для преобразования значения для отображения.. Скажем, например, вы хотите использовать полное имя с заглавной буквы, тогда вы получите доступ к свойству, используя методы модели и конвейер преобразует свое значение, чтобы отображать его по-другому   -  person Mehdi    schedule 16.12.2017
comment
Разве это не дорого с точки зрения количества вызовов метода?   -  person Bilel Noômene    schedule 16.12.2017


Ответы (1)


Угловые каналы лучше всего работают с одним значением, потому что чистые каналы имеют преимущества в производительности. Поскольку ожидается, что и firstname, и lastname будут изменены, чистая труба невозможна, и она закончится как

{{ user.firstname | fullname(user.lastname }}

or

{{ user | fullname }}

нечистый канал, который не имеет преимуществ в производительности по сравнению с методом получения.

Если расчеты недорогие, это может быть либо геттер-метод, либо get метод доступа к свойствам:

get fullname () {return this.firstname + '  ' + this.lastname;}

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

person Estus Flask    schedule 16.12.2017