Как добавить значок в значок мата-значка
Я использую Angular with Material
<button mat-icon-button><mat-icon svgIcon="thumb-up"></mat-icon>Start Recording</button>
Я пытаюсь добавить значок к кнопке, но я не могу понять, как это сделать, и не могу найти документацию для этого.
https://material.angular.io/components/button/api
глядя на документы, есть следующее:
![enter image description here]()
эта кнопка имеет следующий html:
<a _ngcontent-c1="" aria-label="Angular Material" class="docs-button mat-button" mat-button="" routerlink="/" tabindex="0" aria-disabled="false" href="/"><span class="mat-button-wrapper">
<img _ngcontent-c1="" alt="angular" class="docs-angular-logo" src="../../../assets/img/homepage/angular-white-transparent.svg">
<span _ngcontent-c1="">Material</span>
</span> <div class="mat-button-ripple mat-ripple" matripple=""></div><div class="mat-button-focus-overlay">
</div>
</a>
это правильный способ сделать это?
Ответы
Ответ 1
Просто добавьте <mat-icon>
внутри mat-button
mat-raised-button
или mat-button
mat-raised-button
. См. Пример ниже. Не то, что я использую значок материала вместо вашего svg для демонстрационной цели:
<button mat-button>
<mat-icon>mic</mat-icon>
Start Recording
</button>
ИЛИ ЖЕ
<button mat-raised-button color="accent">
<mat-icon>mic</mat-icon>
Start Recording
</button>
Вот ссылка на демоверсию stackblitz.
Ответ 2
Все, что вам нужно сделать, это добавить директиву mat-icon-button к элементу button в вашем шаблоне. В элементе кнопки укажите желаемый значок с компонентом mat-icon.
Вам нужно будет импортировать MatButtonModule и MatIconModule в файл модуля приложения.
На странице примеров кнопок Angular Material нажмите кнопку кода вида, и вы увидите несколько примеров, в которых используется шрифт значков материала, например.
<button mat-icon-button>
<mat-icon aria-label="Example icon-button with a heart icon">favorite</mat-icon>
</button>
В вашем случае используйте
<mat-icon>thumb_up</mat-icon>
Согласно руководству по началу работы по адресу https://material.angular.io/guide/getting-started, вам нужно загрузить шрифт значка материала в ваш index.html.
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Или импортируйте его в свой глобальный styles.scss.
@import url("https://fonts.googleapis.com/icon?family=Material+Icons");
Как уже упоминалось, любой значок-шрифт может использоваться с компонентом mat-icon.
Ответ 3
Добавить в app.module.ts
import {MatIconModule} из '@angular/material/icon';
& link в вашем глобальном index.html.
Ответ 4
Я предпочитаю использовать атрибут inline
. Это приведет к тому, что значок будет масштабироваться в соответствии с размером кнопки.
<button mat-button>
<mat-icon inline=true>local_movies</mat-icon>
Movies
</button>
<!-- Link button -->
<a mat-flat-button color="accent" routerLink="/create"><mat-icon inline=true>add</mat-icon> Create</a>
Я добавляю это в свой styles.css
, чтобы:
- решить проблему вертикального выравнивания значка внутри кнопки
- шрифты значков материала всегда слишком малы по сравнению с текстом кнопки
button.mat-button .mat-icon,
a.mat-button .mat-icon,
a.mat-raised-button .mat-icon,
a.mat-flat-button .mat-icon,
a.mat-stroked-button .mat-icon {
vertical-align: top;
font-size: 1.25em;
}
Ответ 5
Значки материалов используют шрифт значков материалов, и этот шрифт должен быть включен на странице.
Вот CDN от Google Web Fonts:
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
Ответ 6
Вышеприведенный CSS можно записать в SASS следующим образом (и он фактически включает в себя все типы кнопок, а не просто button.mat-button)
button,
a {
&.mat-button,
&.mat-raised-button,
&.mat-flat-button,
&.mat-stroked-button {
.mat-icon {
vertical-align: top;
font-size: 1.25em;
}
}
}