将变量传递到[图标]的字体上很棒不起作用

发布于 2025-01-24 20:39:30 字数 1392 浏览 2 评论 0原文

我使用的字体很棒。

我想通过*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'
    }
]

I am using Font Awesome with Angular.

I want to loop through some data via *ngFor to create icons in a navigation bar. However, the [icon] is not accepting the values from the variable.

Component 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>

Data

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬﹪忆之殇 2025-01-31 20:39:30

无法复制第三种情况。

来自 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',
  },
];

stackblitz上的示例演示

Cannot reproduce the third scenario.

From IconProp,

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

Hence, for the second scenario,

Specify the navbarData type as:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文