通过 Angular 组件更改字体真棒图标

Changing font awesome icons through Angular components

我正在使用 font-awesome 版本 4.7.0 和 Angular 5。当我向屏幕添加图标时,图标立即从标签变为,我无法访问它的 class来自 Angular 组件,这是我想要做的。

由此产生的行为是正确显示了第一个定义的图标,但我所做的任何后续更改应该反映在 UI 上,并且根本没有显示字体很棒的图标。

具体问题是我希望在对 table 进行排序时更改图标。初始图标设置为 fa-sort,并且显示正确,但是当单击 table header 时,内容得到排序和更新,但图标没有更改为 [=23] =]-向上或 fa-sort-向下。我已经测试了逻辑并且它工作正常。

应该执行此操作的当前 HTML 代码如下所示:

<i [ngClass]="sortBy.key !== 'login' ? 'icon-sort' : sortBy.order === 'desc' ? 'icon-sort-up' : 'icon-sort-down'"></i>

尝试在组件代码本身中分配图标,例如:

在组件中

getIcon(){
   sortBy.key !== 'login' ? 'icon-sort' : sortBy.order === 'desc' ? 'icon-sort-up' : 
  'icon-sort-down'
}

我认为它与变化检测有关,或者您可以通过导入变化检测在排序后手动触发它。

例如:

`constructor(cd: ChangeDetectorRef) {}`

然后在您的代码中,

    this.cd.detectChanges();

这是因为 fontawesome 将您的标签替换为 .要更改图标,请使用此模板(在您需要的 class 中使用):

<span *ngIf="sortAsc"><i class="icon-sort-up"></i></span>
<span *ngIf="!sortAsc"><i class="icon-sort-down"></i></span>