Как добавить Font Awesome в Ionic 4

Существует множество руководств и статей о том, как включить Font Awesome в проект Ionic 3, но я изо всех сил пытался найти какую-либо информацию о том, как добавить Font Awesome в проект Ionic 4. Итак, возникает вопрос, как добавить и использовать Font Awesome в проекте Ionic 4?

Я пытался использовать следующий руководство без особого успеха. Я попытался выполнить шаги, описанные в следующем Ответ StackOverflow, но это тоже не сработало.

Кажется, вы сами ответили на свой вопрос за пару секунд. Какая-то конкретная причина этого?

shhdharmen 23.01.2019 10:52

Это особенность, когда вы задаете вопрос, вы можете ответить на него самостоятельно. Наконец-то я понял, как сделать это правильно, поэтому я просто решил поделиться этим с сообществом. Поскольку стиль вопросов и ответов доступен в SO, я пошел дальше и сделал это.

Tachyon 23.01.2019 10:54

Итак, я предполагаю, что вы пытаетесь создать вики-пост сообщества. В этом случае сначала прочтите это: meta.stackexchange.com/questions/11740/…, а затем это: stackoverflow.com/help/привилегии/сообщество-вики.

shhdharmen 23.01.2019 10:57

Отвечая на свои вопросы, стиль вопросов и ответов — абсолютно разрешено и приветствуется на SO, если и вопрос, и ответ имеют высокое качество. Ответы на вопросы в стиле вопросов и ответов в вики-сообщениях сообщества определенно не являются обязательными...

Phonolog 23.01.2019 11:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
4
15 322
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Чтобы заставить Font Awesome работать в проекте Ionic 4, вы можете выполнить следующие шаги.

Во-первых, вам нужно установить все пакеты npm, первые два обязательны, но вы можете решить, нужны ли вам значки solid, regular или brands, я буду использовать их все. Идите вперед и выполните следующие команды npm в своем терминале:

npm i --save @fortawesome/fontawesome-svg-core
npm i --save @fortawesome/angular-fontawesome
npm i --save @fortawesome/free-solid-svg-icons
npm i --save @fortawesome/free-regular-svg-icons
npm i --save @fortawesome/free-brands-svg-icons

Сделав это, перейдите к app.module.ts в своем проекте и добавьте следующее:

import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { library } from '@fortawesome/fontawesome-svg-core';

В зависимости от того, какие пакеты шрифтов вы установили, добавьте следующее:

import { fas } from '@fortawesome/free-solid-svg-icons';
import { far } from '@fortawesome/free-regular-svg-icons';
import { fab } from '@fortawesome/free-brands-svg-icons';

После того, как они будут импортированы вверху вашего файла, вам нужно будет включить FontAwesomeModule в ваш импорт:

.....
imports: [...., FontAwesomeModule],
.....

Еще раз, в зависимости от того, какие значки вы выбрали, вам нужно будет добавить их в библиотеку Font Awesome, которая была импортирована ранее. Добавьте это под своим последним импортом (выше @NgModule()):

library.add(fas, far, fab);

Затем перейдите к модулю страницы, в котором вы хотите использовать шрифты, например home.module.ts, а затем импортируйте и добавьте FontAwesomeModule:

import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'
....

@NgModule({
    imports: [
        ...
        FontAwesomeModule
        ...
    ],
})

Затем, наконец, вы можете использовать значок в HTML-коде этой страницы, вставив следующее в нужное место:

<fa-icon [icon] = "['fas', 'graduation-cap']" slot = "end"></fa-icon>

Вы можете заменить fas на правильную библиотеку, то есть far, fas и fab, а затем имя значка, которое в данном случае было graduation-cap.

Вы написали: Добавьте это под вашим последним импортом: library.add(fas, far, fab); Что это значит? Я не могу поместить это ни в раздел imports, ни между imports и providers, ни добавить его к импорту FontAwesomeModule. Я немного озадачен, как добавить библиотеки.

Memetican 01.04.2019 10:40

@Memetican - взгляните на этот пример. Должен объяснить это более ясно. pastebin.com/zqea6T2r Строка 24 — это то, на что вам нужно обратить внимание.

Tachyon 01.04.2019 10:48

Большое спасибо @Tachyon, я сам только что понял это. Удивительно видеть то, что выглядит как строка инструкции, находящаяся за пределами функционального блока кода. Еще раз спасибо.

Memetican 01.04.2019 11:00

Благодаря тонну! @Тахион

Abhishek Sharma 13.04.2019 18:56

Отличные инструкции. Но на данный момент, если вы не используете angular 8, вам нужно будет установить версию 0.3.0, иначе она не будет работать. npm i --save @fortawesome/[email protected]. В остальном то же самое.

MadMac 10.06.2019 23:30

это делает приложение раздутым?

Iyas 21.07.2019 09:56

Привет, @Tachyon, я последовал твоим шагам, чтобы добавить потрясающий шрифт в ионный проект. Я получаю предупреждение: client:154 ./node_modules/@fortawesome/angular-fontawesome/fesm5/angula‌​r-fontawesome.js 162:55-73 «экспорт ‘ɵɵdefineInjectable’ не найден в ‘@angular/core’ пожалуйста, помогите мне, как исправить эту проблему.

Shaik 24.07.2019 14:49

@Саиф. Вы пробовали npm i --save @fortawesome/[email protected]. Проверьте свою версию Angular, используя «ng version». Тогда проверьте здесь на совместимость: npmjs.com/package/@fortawesome/angular-fontawesome см. мой комментарий выше.

MadMac 13.08.2019 23:01

Кто-нибудь знает, как увеличить размер значка в 2 раза, используя <fa-icon [icon] = "['fas', 'graduation-cap']" slot = "end"></fa-icon>?

MadMac 13.08.2019 23:34

Отличная реализация! Как вы включаете значки Pro таким образом? Спасибо

Syclone 30.11.2019 08:58

Я нашел это! Вы можете добавить профессиональную версию, заменив префикс free на pro, например. @fortawesome/pro-regular-svg-icons

Syclone 30.11.2019 17:34

Слишком сложно. Следующий ответ намного проще.

MTarantini 21.12.2020 17:39

На всякий случай, если кто-то имеет дело с FontAwesome PRO. Недавно я купил профессиональные иконки FontAwesome и интегрировал их следующим образом:

  • скопируйте папку веб-шрифтов FontAwesome в src/assets/
  • скопируйте папку FontAwesome scss в src/theme/
  • измените путь $fa-font-path в _variables.scss с помощью assets/webfonts !default;

  • добавить в global.scss

    @import './theme/[YourDirectoryfontawesomeScss]/fontawesome.scss';
    @import './theme/[YourDirectoryfontawesomeScss]/solid.scss';
    @import './theme/[YourDirectoryfontawesomeScss]/brands.scss';
    @import './theme/[YourDirectoryfontawesomeScss]/light.scss';
    @import './theme/[YourDirectoryfontawesomeScss]/regular.scss';

Наконец, вы можете использовать их с тегом i. Например

<i class = "fas fa-stack-overflow"></i>

вы можете найти более подробную информацию о fa-классах здесь https://fontawesome.com/how-to-use/on-the-web/setup/getting-started

Есть более простой способ включить их в пакет Angular, описанный в ответе @Tachyon. Просто следуйте этому руководству здесь: github.com/FortAwesome/angular-fontawesome/blob/master/docs/‌​… Дополнительная настройка, необходимая для аутентификации и ее использования через npm, описана здесь: fontawesome.com/how-to-use/on-the-web/setup/…

Manuel 05.09.2019 14:33

Выполните следующую команду:

npm install --save-dev @fortawesome/fontawesome-free

Затем в angular.json добавьте это к «стилям»:

{
    "input": "node_modules/@fortawesome/fontawesome-free/css/all.css"
}

Очень просто и функционально. Я также добавил скрипты в angular.json, как описано здесь: edupala.com/font-awesome-in-ionic

MTarantini 21.12.2020 17:40

Самый простой способ для пользователя Angular — написать ng add @fortawesome/angular-fontawesome@latest

Я ломал голову, пытаясь заставить это работать с Ionic 5/Angular 10, и не смог заставить его работать. В конце концов я подумал, вдруг кому-то это понадобится.

Для ионных 5/угловых 10

Запустите ng add @fortawesome/angular-fontawesome@latest в папке вашего проекта и выберите нужные значки.

В app.module.ts добавьте следующее:

import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
import { fas } from '@fortawesome/free-solid-svg-icons'; //Solid icons
import { far } from '@fortawesome/free-regular-svg-icons'; // Regular icons
import { fab } from '@fortawesome/free-brands-svg-icons'; // Brand icons

И импортируйте FontAwesomeModule в объявления импорта, чтобы это выглядело так:

@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, FontAwesomeModule],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent],
})

А затем экспортируйте конструктор библиотеки так...

export class AppModule {
  constructor(library: FaIconLibrary) {
    library.addIconPacks(fas, far, fab);
  }
}

Перейдите к модулю, который вы хотите использовать Font Awesome (например, mypage.module.ts), и импортируйте файл FontAwesomeModule.

Наконец, в вашем HTML, например. mypage.page.html просто использует <fa-icon icon = "home"></fa-icon> для отображения значка.

Если вы столкнетесь с какими-либо проблемами, обязательно сначала остановите Ionic и снова запустите ionic serve, так как это должно перекомпилировать фреймворк.

Также взгляните на https://github.com/FortAwesome/angular-fontawesome/blob/master/docs/usage/features.md для получения полного списка функций, доступных при его использовании.

Другие вопросы по теме