angular - 将 @fortawesome/fontawesome 包含到 angular-cli 项目中

标签 angular angular-cli font-awesome font-awesome-5 angular-fontawesome

我正在尝试将 font awesome 5 添加到我运行 Angular >5.0.0 的 angular-cli 项目 (1.6.0) 中。

我使用(如描述):

yarn config set @fortawesome:registry https://npm.fontawesome.com/xxxxx-xxxx-xxx-xxx-xxxxxxx
yarn add @fortawesome/fontawesome
yarn add @fortawesome/fontawesome-pro-light

获取包成功。现在我想将该包包含到我的 angular-cli 中。在我的 app.component.ts我尝试这样做(如描述于:https://www.npmjs.com/package/@fortawesome/fontawesome):

import  fontawesome  from '@fortawesome/fontawesome'
import { faUser } from '@fortawesome/fontawesome-pro-light'

但是 typescript 抛出错误:

ERROR in src/app/app.component.ts(2,9): error TS1192: Module '"xxx/node_modules/@fortawesome/fontawesome/index"' has no default export.

对于 Font Awesome 4,我只是将 .css 文件包含到“styles”数组中。但是 Font Awesome 5 没有包含所有 css 的 css 文件。它只是一堆 .js 文件。

如何在我的 Angular CLI 项目中正确包含 Font Awesome 5? (我希望能够在我的标记中使用例如 <i class="fal fal-user"></i>)

最佳答案

在 Font Awesome 5 中,您可以像在 FA4 中一样使用基于字体的图标,也可以使用新的基于 SVG 的图标。我仍在研究使用 angular-cli 配置基于 SVG 的配置,但对于基于字体的配置,您可以:

将 FontAwesome 添加到您的 .angular-cli.json:

将 FA 样式包含为 CSS 或 SCSS:

  "styles": [
    "styles.scss"
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css",
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css",
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-regular.css",
    "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-brands.css",
  ],

或直接将 FontAwesome 添加到您的样式中:

在 styles.css 或 styles.scss 中包含样式:

$fa-font-path: "../node_modules/@fortawesome/fontawesome-free-webfonts/webfonts";
@import "../node_modules/@fortawesome/fontawesome-free-webfonts/scss/fontawesome.scss";
@import "../node_modules/@fortawesome/fontawesome-free-webfonts/scss/fa-solid.scss";

或将 FontAwesome 作为 CSS 直接添加到您的样式中:

@import "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css";
@import "../node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css";

如果您不需要修改/增强 FA SCSS,那么使用第一种方法可能最简单。它只是成为您配置的一部分。

关于 SVG

我怀疑这需要包含 FA javascript 文件,但我还没有深入研究。一旦完成,它可能与上面的非常相似。


SVG 还原

(编辑以添加有关 SVG 的更多详细信息)

这比我想象的要简单得多。如果您安装了正确的模块:

...您只需将两个必需的脚本添加到您的 .angular-cli.json 中即可。您需要基本的 fontawesome 脚本,然后是您需要的任何包(或全部三个):

  "scripts": [
    "../node_modules/@fortawesome/fontawesome/index.js",
    "../node_modules/@fortawesome/fontawesome-free-solid/index.js"
  ],

这些脚本将找到您的普通 FA 类,并将元素替换为 FA 图标的完整 SVG 版本。

关于angular - 将 @fortawesome/fontawesome 包含到 angular-cli 项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48184079/

相关文章:

javascript - 订阅 observable 返回 undefined

javascript - 无法读取 subview 的变量数据

javascript - 错误: D3 V4 Multi-series line chart with Angular-cli - <path> attribute d: Expected number

css - 单击输入时更改 Font Awesome 图标颜色

javascript - Angular 5 - 在 Angular 应用程序中使用 altmetric 徽章会出现 Uncaught Error : Template parse errors

angular - 在 Angular 8 中获取以前和当前的 URL

angular - SystemJS 6.x 设置/注册模块或在动态加载模块时提供映射

angular - Protractor :ng e2e:如何解决 "Error: connect ETIMEDOUT"错误?

javascript - JQuery setTimeout 上的旋转图标

css - 设置 Font Awesome 图标位置