установить заголовок с помощью *ngIf иначе

Я использую Angular 5, и название всплывающего окна зависит от логического значения. Когда свойство isEditing имеет значение true, заголовок должен быть «изменить пользователя». В противном случае заголовок должен быть «добавить пользователя».

Как у него синтаксис?

<dxo-popup title="edit user" .../>

Я ищу что-то вроде:

Спасибо за помощь! Откровенный


person Frank Mehlhop    schedule 15.05.2018    source источник
comment
Я ищу что-то вроде: ‹dxo-popup *ngIf=isEditing than title=edit user else title=add user .../›   -  person Frank Mehlhop    schedule 15.05.2018


Ответы (5)


Другие решения требуют, чтобы вы либо изменили свой HTML, либо добавили ненужный код в ваш Typescript.

Вот тройка:

<dxo-popup [title]="isEditing ? 'Edit user' : 'Add user'" .../>
person Community    schedule 15.05.2018
comment
Я бы не считал добавление кода в компонент ненужным, что предполагает, что это плохо. Некоторые люди могут даже назвать этот код чистым, в котором логика более сложная, чем *ngIf="isEditing", делегируется компоненту. - person tilo; 15.05.2018
comment
Насколько я вижу, руководство по стилю предлагает обратное: angular.io/guide/ (обратите внимание, что логика там тоже проста) - person tilo; 15.05.2018
comment
Ну, я не предполагал, что ваш ответ неверен. Я просто указал, что другие ответы на этот вопрос: а) не обязательно добавляют ненужный код и б) могут считаться чистым кодом для других. - person tilo; 15.05.2018
comment
Возвращаясь к руководству по стилю: только потому, что вы можете что-то сделать, не обязательно означает, что вы должны это делать. В заключение: в текущих ответах нет правильного или неправильного, это просто вопрос стиля. - person tilo; 15.05.2018
comment
Я удаляю свои ненужные комментарии, чтобы ответить вам, и заканчиваю следующим: это решение — то, о чем просил ОП, а другие — нет. - person ; 15.05.2018

Мне нравится брать функциональность из шаблона и переносить ее в компонент:

Составная часть:

isEditing = true;

get title() {
  return this.isEditing ? 'edit user' : 'add user';
}

HTML-шаблон:

<dxo-popup title="{{ title }}" .../>
person tilo    schedule 15.05.2018

Ты можешь сделать

<ng-container *ngIf="isEditing;then edit else add"></ng-container>

<ng-template #edit>edit user</ng-template>
<ng-template #add>add user</ng-template>
person Sajeetharan    schedule 15.05.2018
comment
вместо ‹div› он может использовать ‹ng-container›, это не будет генерировать другой отображаемый html-тег - person Phil; 15.05.2018

Другое решение — использовать функцию в вашем компоненте для возврата текста.

Составная часть:

  isEditing = true;
  popupTitle(){
    return (this.isEditing ? "Edit User" : "Add User");
  }

HTML:

<dxo-popup title="{{popupTitle()}}" .../>
person Malcor    schedule 15.05.2018

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

<button title=" {{ condition ? 'Some TRUE text' : 'Some FALSE text'}}"> Test Button </button>
person Alexis Toby    schedule 12.03.2020