私はangular material 2を使用して私のウェブサイトにアイコンを表示しようとしていますが、少し混乱しています。
マテリアル2のgithubリポジトリのデモから、これが機能するはずです。
https://github.com/angular/material2/blob/master/src/demo-app/icon/icon-demo.ts
私はそれを使用しようとしましたが、アイコンはまったく表示されません。
これは私がそれを設定する方法です:
app.component.ts
import {MdIcon, MdIconRegistry} from '@angular2-material/icon/icon';
@Component({
...
encapsulation: ViewEncapsulation.None,
viewProviders: [MdIconRegistry],
directives: [MdIcon],
})
export class MyComponent{
constructor(private router: Router,
private JwtService:JwtService,
mdIconRegistry: MdIconRegistry){
mdIconRegistry.addSvgIconSetInNamespace('core', 'fonts/core-icon-set.svg')
}
}
およびテンプレート..
<md-icon>home</md-icon>
ページはエラーなしでロードされますが、アイコンは表示されません。何が間違っていたのでしょうか?
MdIcon
を使用するには、対応するcss
ファイルを含める必要があります。コードでは、GoogleのMaterial Icons
であるデフォルトのフォントを使用しています。
デフォルトでは、 マテリアルアイコンフォント が使用されます。 (リンクで説明されているように、フォントとそのCSSを読み込むためにHTMLを含める必要があります)。
単純に、次のようにindex.html
にcssを含めるだけです。
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
または、公式リポジトリに記載されている他のインポート方法を選択できます。
http://google.github.io/material-design-icons/#icon-font-for-the-web
アイコンスペースを分離して使用する(たとえば、ファイルのアップロード)には、アンダースコア_を使用する必要があることを知っておく価値があります。例えば:
<md-icon>file_upload</md-icon>
@ngModule
Angular RC5構文は以下のようになります:
app-example-module.ts
import { MdIconModule, MdIconRegistry } from '@angular2-material/icon';
@NgModule({
imports: [
MdIconModule
]
providers: [
MdIconRegistry
]
})
export class AppExampleModule {
//
}
app-example-component.ts
@Component({
selector: 'app-header',
template: `<md-icon svgIcon="close"></md-icon>`
})
export class AppExampleComponent
{
constructor(private mdIconRegistry: MdIconRegistry) {
mdIconRegistry
.addSvgIcon('close', '/icons/navigation/ic_close_36px.svg');
}
}
style.css内で、以下をコピーして貼り付けます:---
@import "https://fonts.googleapis.com/icon?family=Material+Icons";
そして次のように使用します:
<md-icon>menu</md-icon>
^--- icon name
angular 4.3.3 with @ angular/material 2.0.0-beta-7では、URLをサニタイズする必要もあります。
import { DomSanitizer } from '@angular/platform-browser';
export class AppComponent
{
constructor(
private domSanitizer: DomSanitizer,
private mdIconRegistry: MdIconRegistry) {
mdIconRegistry.addSvgIcon('Twitter', domSanitizer.bypassSecurityTrustResourceUrl('/assets/icons/Twitter.svg'));
}
}
オフライン/ローカルで作業するには(サーバーからCSSを提供):
@import "~material-design-icons/iconfont/material-icons.css";
を追加しますこれが方法です、私は試しましたが、うまくいきます。
mdIconRegistry.addSvgIcon('slider', sanitizer.bypassSecurityTrustResourceUrl('./assets/controls/slider.svg'));
インスタンスmdIconRegistry
はDI経由で利用でき、addSvgIcon
メソッドを使用してカスタムsvgを追加します。次に、テンプレートで<md-icon svgIcon="slider">
を使用します。
Index.htmlに次の行を追加するだけです
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">