J'essaie d'utiliser un matériau angulaire 2 pour afficher des icônes sur mon site Web, mais je suis un peu confus.
Voici comment cela est supposé fonctionner, à partir de la démo dans github repo du matériau 2:
https://github.com/angular/material2/blob/master/src/demo-app/icon/icon-demo.ts
J'ai essayé de l'utiliser, mais aucune icône ne s'affiche.
Voici comment je l'ai mis en place:
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')
}
}
et le modèle ..
<md-icon>home</md-icon>
La page se charge sans erreur, mais aucune icône n'est affichée. Qu'est-ce qui aurait pu mal tourner?
Pour utiliser MdIcon
, vous devez inclure les fichiers css
correspondants. Dans votre code, vous utilisez la police par défaut qui est Material Icons
de Google.
Par défaut, la police d'icônes Matériau est utilisée. (Vous devrez toujours inclure le code HTML pour charger la police et son code CSS, comme décrit dans le lien).
Il suffit simplement d’inclure le css dans index.html
comme ceci:
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
Ou vous pouvez choisir n’importe quelle autre méthode d’importation mentionnée dans le rapport officiel:
http://google.github.io/material-design-icons/#icon-font-for-the-web
Il faut savoir que pour utiliser une icône séparée par un espace (par exemple, le téléchargement de fichiers), nous devons utiliser le trait de soulignement _. Par exemple:
<md-icon>file_upload</md-icon>
À partir de @ngModule
introduction à partir de la syntaxe angulaire RC5, voici la procédure:
app-example-module.ts
import { MdIconModule, MdIconRegistry } from '@angular2-material/icon';
@NgModule({
imports: [
MdIconModule
]
providers: [
MdIconRegistry
]
})
export class AppExampleModule {
//
}
app-example-composant.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');
}
}
inside style.css copiez et collez ce qui suit: ---
@import "https://fonts.googleapis.com/icon?family=Material+Icons";
et utiliser comme:
<md-icon>menu</md-icon>
^--- icon name
Dans la section 4.3.3 angulaire avec @ angular/material 2.0.0-beta-7, vous devez également assainir l’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'));
}
}
Pour travailler en mode hors connexion/local (fournissez des css de votre serveur)
@import "~material-design-icons/iconfont/material-icons.css";
C'est comme ça que j'ai essayé et ça marche.
mdIconRegistry.addSvgIcon('slider', sanitizer.bypassSecurityTrustResourceUrl('./assets/controls/slider.svg'));
L'instance mdIconRegistry
sera disponible via DI et ajoutera un svg personnalisé en utilisant la méthode addSvgIcon
. Ensuite, utilisez <md-icon svgIcon="slider">
dans votre modèle.
Ajoutez simplement la ligne suivante sur index.html
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">