Как оформить угловые формы компонентов материала?

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

Если нет, то как лучше всего настроить компонент в угловом материале? Скажем, я хочу удалить закругленные углы на всех <mat-button>?




Ответы (1)


Короткий ответ заключается в том, что Angular Material не предоставляет простой способ сделать это.

«Тематика» в Angular Material ограничена цветом и типографикой. Формы, интервалы, размеры, границы и так далее жестко запрограммированы. Однако почти все эти вещи в конечном итоге являются CSS, и, конечно же, всегда есть способ настроить CSS. Например, определите какой-нибудь глобальный стиль, который делает что-то вроде:

button.mat-button {
   border-radius: 0;
}

Затем сделайте это для каждого компонента и каждого свойства, которое вы хотите настроить.

Обратите внимание, что это не всегда будет так просто, потому что вам нужно знать внутреннюю DOM и структуру классов всех компонентов, чтобы применить стиль там, где он должен быть. Вам также необходимо знать все параметры компонентов и то, как они изменяют DOM и структуру классов. Вдобавок к этому некоторые компоненты динамически внедряют стиль с использованием ngStyle, и это может быть невозможно переопределить.

Короче говоря, «переделка» Angular Material - это в лучшем случае много работы, и, что более реалистично, это не на 100% достижимо. Если Angular Material не совсем то, что вам нужно, используйте что-нибудь другое.

person G. Tranter    schedule 19.07.2019
comment
Вот чего я боялся. Поскольку спецификация Material Design имеет тематику формы, я надеялся, что есть способ реализовать это в Angular Material. Я надеюсь, что Angular Material соответствует спецификации и позволит создавать формы в будущем. Я мог бы создать свои собственные компоненты и пойти по этому пути. Спасибо за обстоятельный ответ. - person Canolyb1; 19.07.2019
comment
странно, что Angular Material не соответствует их собственным спецификациям Материалов, библиотеки vue, такие как vuetify, более зрелы в этой области - person Ruben; 09.12.2019