Angular 2 中使用 Font Awesome

6

我开始了一个NG2应用程序,想要添加字体awesome。 我使用npm安装了它:npm install --save font-awesome angular2-font-awesome。 我在systemjs.config.js中将其添加到项目:

map: {
  // our app is within the app folder
  app: 'app',

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
  '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
  '@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/http': 'npm:@angular/http/bundles/http.umd.js',
  '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
  '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

  // other libraries
  'rxjs':                      'npm:rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
  'angular2-fontawesome': 'node_modules/angular2-fontawesome'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
  app: {
    defaultExtension: 'js'
  },
  rxjs: {
    defaultExtension: 'js'
  },
  'angular2-fontawesome': { defaultExtension: 'js' }
}

我在 app.module.ts 中添加了:

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent }  from './app.component';
import { CorporateComponent }  from './corporate/corporate.component';
import { Angular2FontawesomeModule } from 'angular2-fontawesome/angular2-fontawesome'

@NgModule({
  imports:      [ BrowserModule , Angular2FontawesomeModule],
  declarations: [ AppComponent, CorporateComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

现在我尝试在我的组件中使用它: 我在HTML模板中添加了:
<i class="fa fa-industry" aria-hidden="true"></i>

但是不知怎么的,我没有看到它......我按照npm的手册操作:https://www.npmjs.com/package/angular2-fontawesome

还有其他什么东西我可能忘记了吗?

感谢任何答案!


你是否已经下载了他们的 font-awesome 字体文件 (otf|eot|svg|ttf|woff|woff2) - Pankaj Parkar
请查看文档,您需要像这样使用它:<fa [name]="industry"></fa>。 - Siddharth Sharma
而不是使用ng2插件,使用Font Awesome原始链接是更好的选择。 - Siddharth Sharma
5个回答

6
如果您想在应用程序中使用FontAwesome CSS样式,只需将CSS链接放入您的index.html中,您不需要使用angular2-font-awesomeindex.html
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">

如果您正在使用 angular2-font-awesome
<i fa [name]="industry"></i>
<fa [name]="industry"></fa>

我认为使用 CDN 更好。

谢谢,太棒了 - 我按照你的建议添加了链接<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">,它起作用了。 问题是为什么使用npm的另一种方式不起作用... 我猜想在Angular 2中,我们有很好的方法来防止我们在索引中加载js文件。 - moshi
1
FontAwesome只包含CSS,为什么你需要一堆代码来使用CSS类包装器,我猜angular2-font-awesome只解析您的输入名称,然后为您应用模板 <i fa [name]="industry"></i> <fa [name]="industry"></fa> -> <i class="fa fa-industry"></i> - Tiep Phan
从这个部分 https://www.npmjs.com/package/angular2-fontawesome#angular-cli 看来,这个库需要你将FontAwesome的css和字体文件放到你的应用程序中,否则它将无法工作。这个库只是提供了另一种方式,而不是编写一个很长的CSS类名。如果你在第一次配置中缺少了CSS和字体文件,那么就会出现问题。 - Tiep Phan
但我不使用Angular CLI。 - moshi
这是一个例子,意思是你需要添加CSS字体文件,并将这些文件提供给使用angular2-font-awesome的用户。 - Tiep Phan
显示剩余2条评论

0

我认为你需要将它添加到你的.angular-cli.json部分,像这样:

你可能在node_modules中使用不同的名称。尝试在node_modules列表中逐个查看已安装的名称。我注意到的另一件事是npm install --save font-awesome angular-font-awesome

`"styles": [
    "styles.css",
    "../node_modules/bootstrap/dist/css/bootstrap.min.css",
    "../node_modules/font-awesome/css/font-awesome.css",
    "../node_modules/npm-font-open-sans/open-sans.styl"


  ],

0
如果您正在使用SCSS,可以采用以下方法:
npm install --save font-awesome

然后在文件style.scss

$fa-version: '4.7';
$fa-font-path: '../fonts';
@import '../node_modules/font-awesome/scss/font-awesome.scss';

$fa-font-path 必须相对于 font-awesome.scss。

$fa-version 不需要定义,但是如果你检查文件 node_modules/font-awesome/scss/_path.scss,你会注意到像这样的 url:

...
src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
...

0

只需要包含脚本标签,就不需要太多的努力。

<div>
      <h2>Hello {{name}}</h2>
      <i class="fa fa-home"></i>
</div>

我的 index.html 包含对上述脚本 URL 的引用。

enter image description here

通过在这里注册获取您的脚本代码。您将收到来自font-awesome的电子邮件,内容如下输入图像描述

实时演示


嗨, 我想知道为什么应该在索引页面中添加链接, 而不仅在需要的地方使用字体图标,就像任何其他模块一样... 这不是导入/导出的好处吗? 我们不应该避免在index.html中有链接吗? - moshi
没有什么特别的。当您使用ng2-fontawesome添加它时,它也将被添加到index.html中。因此并没有太大的区别。 - Aravind
添加链接时,使用<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">和使用你建议的CDN有什么区别? - moshi
没有办法,我尝试了同样的方法,但它对我不起作用。我只是找到了一个替代方案:D - Aravind
但是你像我一样在 app.module.ts 中添加了导入吗? - moshi
没有什么特别的。你看了 Plunker 吗? - Aravind

0

尝试使用以下方法:

首先使用命令安装字体awesome:npm install --save font-awesome angular-font-awesome

其次,在您的style.scss文件中导入它

$fa-font-path: "../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome.scss";

或者将其添加到您的 style.css 文件中

@import '~font-awesome/css/font-awesome.css';

命令。字体已经准备好使用了。

现在将您的字体放置在任何html文件中。<i class="fa facebook"></i>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接