【问题标题】:Passing variable into [icon] for Font Awesome not working将变量传递到 [icon] 以使 Font Awesome 不起作用
【发布时间】:2022-11-10 11:44:57
【问题描述】:

我在 Angular 中使用 Font Awesome。

我想通过*ngFor 循环访问一些数据以在导航栏中创建图标。但是,[icon] 不接受来自变量的值。

组件 HTML

<div class="navbar-container container" [ngClass] = "expanded ? 'navbar-collapsed': ''">
  <div class="navbar-logo-container">
    <button class="logo" (click)="toggleCollapsed()">
      A
    </button>
    <div class="logo-text" *ngIf="expanded">My Site</div>
  </div>
  <ul class="navbar-nav">
    <li class="navbar-nav-item" *ngFor="let data of navData">
      <a class="navbar-nav-link" [routerLink]="[data.routeLink]">

        //works
        <fa-icon [icon]="['fas','star']"></fa-icon> 

        //Error: Type 'string' is not assignable to type 'IconProp'.
        <fa-icon [icon]="data.iconfull"></fa-icon> 

        // Type 'string' is not assignable to type 'IconProp'.
        <fa-icon [icon]="[data.iconfirst,data.iconsecond]"></fa-icon> 

        <span class="navbar-link-text" *ngIf="expanded">{{data.label}}</span>
      </a>
    </li>
  </ul>
</div>

数据

export const navbarData = [
    {
        routeLink: 'dashboard',
        iconfirst: 'fas',
        iconsecond: 'star',
        iconfull: "['fas','star']",
        label: 'Dashboard'
    }
]

【问题讨论】:

    标签: html angular font-awesome angular-fontawesome


    【解决方案1】:

    无法重现第三种情况。

    来自IconProp

    export type IconProp = IconName | [IconPrefix, IconName] | IconLookup;
    

    因此,对于第二种情况,

    navbarData 类型指定为:

    import {
      IconProp,
      IconPrefix,
      IconName,
    } from '@fortawesome/fontawesome-svg-core';
    
    navbarData: {
      routeLink: string;
      iconfirst: IconPrefix;
      iconsecond: IconName;
      iconfull: IconProp;
      label: string;
    }[] = [
      {
        routeLink: 'dashboard',
        iconfirst: 'fas',
        iconsecond: 'star',
        iconfull: ['fas', 'star'],
        label: 'Dashboard',
      },
    ];
    

    Sample Demo on StackBlitz

    【讨论】:

    • 我确实看到这在 StackBlitz 上有效,但它不适用于我的。不同的错误,但大多相同。类型 'string[]' 不可分配给类型 'IconProp'。类型 'string[]' 不能分配给类型 '[IconPrefix, IconName]'。目标需要 2 个元素,但源可能有更少。
    • 也许您也可以尝试将navbarData 的类型指定为demo
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2019-04-01
    • 1970-01-01
    • 2022-10-02
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多