Подтвердить что ты не робот

Метод вызова из шаблона Angular 2 внутри шаблона

У меня есть приложение angular 2, которое имеет класс User. У этого пользователя есть атрибут с именем deleted_at, который является либо нулевым, либо содержит дату-время, очевидно, что пользователь удаляется, если свойство deleted_at не равно null. Вот как выглядит мой файл user.ts:

User.ts

export class User {
    id: number;
    email: string;
    created_at: string;
    first_name: string;
    last_name: string;
    deleted_at: any;

    name() {
        if (this.deleted_at === null) {
            return this.first_name;
        } else {
            return 'DELETED';
        }
    }
}

Теперь я ожидал, что могу просто назвать имя в своем шаблоне простой строкой:

{{ user.name }}

Однако это ничего не возвращает, как вы можете вызывать определенные функции в шаблоне angular 2? Или это не разрешено?

Изменить:, чтобы очистить бит, это класс User, который я использую в своем компоненте user-list.component.ts, обрабатывается несколько пользователей в этом компоненте.

4b9b3361

Ответ 1

Вы вызываете метод следующим образом:

{{user.name()}} // instead of {{user.name}}

Для этого подхода вам нужно знать, что вы потеряете контекст выполнения (this). См. Этот вопрос для получения дополнительной информации:

Или вы определяете свой метод как getter, чтобы вы могли использовать user.name в своем шаблоне:

get name() {
  if (this.deleted_at === null) {
    return this.first_name;
  } else {
    return 'DELETED';
  }
}

Ответ 2

В Angular2, вызывающем метод неопределенно.

Просто просмотрите приведенный ниже код.

Шаблон:

{{ getExpiryDate(milliseconds)}}

компонент:

getExpiryDate(milliseconds){
   return days;
}

** Есть ли какое-либо другое решение для этой проблемы?

Ответ 3

Если шаблон, на который вы ссылаетесь, находится из вашего компонента выше, вы можете просто сделать {{ name() }}. В Angular 2 вам не нужно сначала ссылаться на ваш компонент, чтобы вызвать методы, как это было в случае Angular 1. Если ваш класс - это просто модель, которую вы указали в своем компоненте, сначала нужно получить ссылку на эту модель, а затем вызвать свой метод {{ user.name() }}. Однако, если ваш метод - просто простой getter, я бы просто получил доступ к публичному свойству, а не к вызову метода.