【问题标题】:font awesome with Angular 2Angular 2 的字体真棒
【发布时间】:2017-06-25 16:46:20
【问题描述】:

我启动了一个 NG2 应用程序并想添加很棒的字体。 我使用 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)吗?
  • 请查看文档,您必须像 一样使用它
  • 是的,而不是使用 ng2 插件,使用 font awesome 原始链接是一个更好的选择。

标签: angular fonts


【解决方案1】:

如果您想在您的应用中使用 FontAwesome css 样式,只需将 css 链接添加到您的 index.html,您不需要 angular2-font-awesome

index.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 更好。

【讨论】:

  • 谢谢,太好了 - 我按照您的建议添加了链接 maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/…"> 并且有效。问题是为什么使用 npm 的另一种方式不起作用......我猜使用 angular 2 我们有很好的方法来阻止我们在索引中加载 js 文件。
  • FontAwesome 只包含 css,为什么你需要一堆代码来使用 css 类包装器,我猜 angular2-font-awesome 只解析你的输入名称,然后为你应用模板 &lt;i fa [name]="industry"&gt;&lt;/i&gt; &lt;fa [name]="industry"&gt;&lt;/fa&gt; -> &lt;i class="fa fa-industry"&gt;&lt;/i&gt;
  • 从这部分https://www.npmjs.com/package/angular2-fontawesome#angular-cli看来,这个lib需要你把FontAwesome的css,fonts放到你的应用程序中,如果没有,它将无法工作。这个库只提供另一种方式,而不是编码一个长的 css 类名。并且您在第一个配置中缺少 css、字体。
  • 但我不使用 angular-cli
  • 这是示例,这意味着您需要添加css, fonts 并提供这些文件以使用angular2-font-awesome
【解决方案2】:

只需添加script 标签即可。

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

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

通过 Registering Here 获取您的脚本代码。您将收到一封来自 font-awesome 的邮件,如下

LIVE DEMO

【讨论】:

  • 嗨,我想知道为什么我应该在索引页面中添加一个链接,而不是像任何其他模块一样使用令人敬畏的字体...这不是导出/导入的好处吗?我们不应该避免在 index.html 中有链接吗?
  • 没什么。当您使用 ng2-fontawesome 添加它时,它也会添加到 index.html。所以没有太大区别。
  • 添加链接有什么区别:maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/…"> 或你建议的cdn?
  • 不知道,因为我尝试了同样的方法,但它对我不起作用。刚刚找到了一个替代方案:D
  • 但是你像我一样在 app.module.ts 中添加了导入,对吧?
【解决方案3】:

我认为您需要将其添加到您的 .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"


  ],

【讨论】:

    【解决方案4】:

    尝试使用这种方法:

    首先使用命令安装字体真棒: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 文件中。 &lt;i class="fa facebook"&gt;&lt;/i&gt;

    【讨论】:

      【解决方案5】:

      如果您使用的是 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,你会注意到网址是这样的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-24
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        • 2017-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多