Как выровнять кнопку прямо внутри материала Dialog angular?

Я хочу, чтобы кнопка выравнивания в правом углу диалогового окна ниже - это мой html

<div mat-dialog-content>
  <p>What's your favorite animal?</p>
  <mat-form-field>
    <input matInput [(ngModel)] = "data.animal">
  </mat-form-field>
</div>
<div mat-dialog-actions>

  <button mat-button [mat-dialog-close] = "data.animal" cdkFocusInitial>Ok</button>
</div>

демонстрация

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
34
0
77 065
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Удалять

{display: flex} 

стили для действий класса mat-dialog-actions

у меня будет несколько всплывающих окон, если я уберу {display: flex}, все будет хорошо. для этой конкретной кнопки всплывающего окна необходимо, чтобы она была в правом углу

user9450118 22.03.2018 05:50
Ответ принят как подходящий

Вы можете использовать атрибут HTML align:

<div mat-dialog-content>
  <p>What's your favorite animal?</p>
  <mat-form-field>
    <input matInput [(ngModel)] = "data.animal">
  </mat-form-field>
</div>
<div mat-dialog-actions align = "end">
  <button mat-button [mat-dialog-close] = "data.animal" cdkFocusInitial>Ok</button>
</div>

Демо


Примечание. Причина, по которой установка атрибута align = "end" работает в контейнере действий диалогового окна, заключается в том, что атрибут align используется для добавления свойств flexbox к действиям диалогового окна в SCSS-файле тематики компонента диалога:

(Экстракт dialog.scss)

.mat-dialog-actions {
  // ...
  &[align='end'] {
    justify-content: flex-end;
  }

  &[align='center'] {
    justify-content: center;
  }
}

Вот исходный код.

Поскольку атрибут align - не поддерживается в HTML5, посмотрите на мой ответ, чтобы получить эквивалент CSS.

Maarti 13.12.2018 17:10

Я обновил ответ, чтобы отметить, что на самом деле делает атрибут align. (Обновлено: не видел ответа ниже!)

Edric 20.12.2018 16:43

Фу. Почему они не определили align, используя @Input(), а вместо этого добавили к нему правильные классы? Тогда возможные значения будут задокументированы и не будут помечены как ошибка в моем редакторе.

ShamPooSham 17.12.2020 12:21

Поскольку атрибут alignне поддерживается в HTML5, вы должны использовать вместо этого этот CSS:

.mat-dialog-actions {
    justify-content: flex-end;
}

Это то, что внутренне делает Angular Material, когда вы помещаете align = "end", вы можете проверить элемент, чтобы проверить это.

это должен быть правильный ответ, линты могут сказать, что свойство "align" устарело.

veroneseComS 21.08.2020 16:52

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

<h4 mat-dialog-title>
        <mat-toolbar role = "toolbar" class = "task-header">
            <span> Edit Task</span>
            <span class = "fx-spacer"></span>
            <button mat-icon-button (click) = "close()">
                <mat-icon mat-list-icon>close</mat-icon>
            </button>
        </mat-toolbar>
    </h4>
    <div mat-dialog-content>
    Modal Content here
    </div>

Пользовательский CSS для заголовка

.task-header {
    background-color: transparent;
    padding: 0 5px;
    height: 20px;
}
.fx-spacer {
    flex: 1 1 auto;
}

Думаю, я немного опоздал, но все равно. вы можете использовать атрибут стиля float:

  <button mat-button [mat-dialog-close] = "data.animal" cdkFocusInitial style = "float: left;">Ok</button>

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

Закройте функциональность и выравнивание кнопок без TypeScript.

HTML:

<button class = "button-close" mat-button [mat-dialog-close] = "true">X</button>

CSS:

.button-close {
    justify-self: right;
    font-size: 20px;
    border: none;
    height: 30px;
    background-color: #FFFFFF;
    outline: none;
    color: #c04747;
    
    &:hover {
        cursor: pointer;
    }
}

Другие вопросы по теме