Material 2 - 如何让 md-icon 在 SystemJS 项目中工作?
Material 2 - how to let md-icon work in SystemJS project?
有 Material 2 个基于 SystemJS 的项目。
Material2是这样安装的:
npm install --save @angular/material
然后在 SystemJS 配置中进行连接:
...
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'@angular/material': 'npm:@angular/material/material.umd.js', <-- material 2
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
...
指定index.html
中设置的图标:
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/>
正在设置 MdIconRegistry
:
...
import { MaterialModule } from '@angular/material';
import { MdIconRegistry } from '@angular/material/icon';
@NgModule({
imports: [ BrowserModule, MaterialModule.forRoot() ],
declarations: [ AppComponent ],
providers: [ MdIconRegistry ],
bootstrap: [ AppComponent ],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class AppModule {
constructor(mdIconRegistry: MdIconRegistry) {
mdIconRegistry.registerFontClassAlias('material', 'material-icons');
}
}
然后在里面使用AppComponent
:
<md-icon fontSet="material">home</md-icon>
但由于这些 JS 错误,它不起作用:
zone.js:1382 GET http://localhost:8080/node_modules/@angular/material/material.umd.js/icon 404 ()
Error: (SystemJS) XHR error (404) loading http://localhost:8080/node_modules/@angular/material/material.umd.js/icon
值得一提的是,相同的配置在使用 Angular CLI 制作的项目中工作正常。
如何让 md-icon
在 SystemJS 项目中工作?
要使用默认图标字体(使用 SystemJS)只需执行以下操作(对我有用):
<md-icon>home</md-icon>
根据docs:
不需要使用MdIconRegistry
顺便说一句,您遇到的错误是由这一行引起的:
import { MdIconRegistry } from '@angular/material/icon';
应该是:
import { MdIconRegistry } from '@angular/material';
有 Material 2 个基于 SystemJS 的项目。
Material2是这样安装的:
npm install --save @angular/material
然后在 SystemJS 配置中进行连接:
...
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'@angular/material': 'npm:@angular/material/material.umd.js', <-- material 2
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
...
指定index.html
中设置的图标:
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/>
正在设置 MdIconRegistry
:
...
import { MaterialModule } from '@angular/material';
import { MdIconRegistry } from '@angular/material/icon';
@NgModule({
imports: [ BrowserModule, MaterialModule.forRoot() ],
declarations: [ AppComponent ],
providers: [ MdIconRegistry ],
bootstrap: [ AppComponent ],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class AppModule {
constructor(mdIconRegistry: MdIconRegistry) {
mdIconRegistry.registerFontClassAlias('material', 'material-icons');
}
}
然后在里面使用AppComponent
:
<md-icon fontSet="material">home</md-icon>
但由于这些 JS 错误,它不起作用:
zone.js:1382 GET http://localhost:8080/node_modules/@angular/material/material.umd.js/icon 404 ()
Error: (SystemJS) XHR error (404) loading http://localhost:8080/node_modules/@angular/material/material.umd.js/icon
值得一提的是,相同的配置在使用 Angular CLI 制作的项目中工作正常。
如何让 md-icon
在 SystemJS 项目中工作?
要使用默认图标字体(使用 SystemJS)只需执行以下操作(对我有用):
<md-icon>home</md-icon>
根据docs:
不需要使用MdIconRegistry顺便说一句,您遇到的错误是由这一行引起的:
import { MdIconRegistry } from '@angular/material/icon';
应该是:
import { MdIconRegistry } from '@angular/material';