Использование значков angular 2 материала

Я пытаюсь использовать угловой материал 2 для отображения значков на моем сайте, но я немного запутался.

Вот как это должно работать, из демонстрации в github repo материала 2:

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>

Страница загружается без ошибок, но значок не отображается. Что могло пойти не так?

Ответы

Ответ 1

Чтобы использовать MdIcon, вам нужно включить соответствующие файлы css. В вашем коде используется шрифт по умолчанию Material Icons из Google.

Из angular -material2 repo:

По умолчанию используется Material icons font. (Вам все равно нужно включить HTML для загрузки шрифта и его CSS, как описано в ссылке).

Просто просто включите css в index.html следующим образом:

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

Или вы можете выбрать любой другой способ импорта, указанный в официальном репо:

http://google.github.io/material-design-icons/#icon-font-for-the-web

Ответ 2

Стоит знать, что для использования выделенного пространства значков (например, для загрузки файла) нам нужно использовать знак подчеркивания _. Например:

<md-icon>file_upload</md-icon>

Ответ 3

Начиная с @ngModule, начиная с Angular синтаксис RC5 будет следующим:

приложение-пример-module.ts

import { MdIconModule, MdIconRegistry } from '@angular2-material/icon';

@NgModule({
    imports: [
        MdIconModule
    ]
    providers: [
        MdIconRegistry
    ]
})

export class AppExampleModule {
    //
}

приложение-пример-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');
    }
}

Ответ 4

внутри style.css скопируйте и вставьте следующее: ---

@import "https://fonts.googleapis.com/icon?family=Material+Icons";

и используйте как:

<md-icon>menu</md-icon>
          ^--- icon name

Ответ 5

В angular 4.3.3 с @ angular/материалом 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'));
    }
}

Ответ 6

Для работы в автономном/локальном режиме (предоставьте css с вашего сервера):

  1. npm install material-design-icons --save
  2. в src/styles.css добавьте @import "~material-design-icons/iconfont/material-icons.css";

Ответ 7

Так я и пытался, и он работает.

mdIconRegistry.addSvgIcon('slider', sanitizer.bypassSecurityTrustResourceUrl('./assets/controls/slider.svg'));

Экземпляр mdIconRegistry будет доступен через DI и добавит пользовательский svg, используя метод addSvgIcon. Затем используйте <md-icon svgIcon="slider"> в своем шаблоне.

Ответ 8

Просто добавьте следующую строку в index.html

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

Ответ 9

Мы должны следовать шагам

https://www.npmjs.com/package/ng2-image-viewer

После выполнения этих шагов мы должны включить ссылку на значки материалов в index.html.

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

Для значков материалов добавьте код в файл style.css

.inline-icon > div > .tooltip:first-child {
    pointer-events: none;
  }

  .options-image-viewer > .tooltip {
    opacity: 1 !important;
    pointer-events: visible !important;
  }

  .inline-icon, .image-gallery-2 {
    background-color: #222B38 !important;
  }

Ничего себе, это работает нормально.............

Ответ 10

Также вам нужно импортировать Http.

import {HTTP_PROVIDERS} from '@angular/http';
import {MdIcon, MdIconRegistry} from  '@angular2-material/icon';
@Component({
    template:`<md-icon>code</md-icon>`
    directives:[MdIcon],
    providers: [HTTP_PROVIDERS, MdIconRegistry]
})