Судя по исходному коду, директива mat-card-avatar
не делает ничего, кроме как присваивает класс mat-card-avatar
элементу директивы, который просто добавляет небольшой стиль для создания внешнего вида аватара.Поэтому нет ничего плохого в том, чтобы использовать его вне mat-card
.
Что касается того, почему что-то общего назначения стало частью компонента MatCard - возможно, потому что они не хотели переходить к дополнительномуусилия по тестированию и поддержке с другими использованиями, и заставить MatCard работать должным образом с миниатюрой общего назначения.Это также может быть связано с тем фактом, что Material Design указывает это как элемент для карт, хотя тот же элемент указан для списков (и, возможно, в другом месте) и существует как другая директива mat-list-icon
(код стиля немного отличается).Попросите, чтобы никто в команде не позаботился о таких простых вещах, как этот.
Одна из негативных сторон использования этого заключается в том, что вам необходимо импортировать весь модуль MatCard, чтобы использовать его.Нет проблем, если вы используете mat-card
в своем приложении, но это добавляет ненужный размер к вашему приложению, если вы не.Было бы лучше просто украсть код стиля и создать свой собственный класс.
$mat-card-header-size: 40px !default;
.mat-card-avatar {
height: $mat-card-header-size;
width: $mat-card-header-size;
border-radius: 50%;
flex-shrink: 0;
// Makes `<img>` tags behave like `background-size: cover`. Not supported
// in IE, but we're using it as a progressive enhancement.
object-fit: cover;
}