如何在ngFor列表中使用核心和自定义Angular材质图标的组合?

问题描述:

说我有核心Angular Material icons的列表,像这样:如何在ngFor列表中使用核心和自定义Angular材质图标的组合?

<md-nav-list> 
    <a md-list-item *ngFor="let item of items"> 
     <md-icon>{{item.icon}}</md-icon> 
    </a> 
</md-nav-list> 

不过,我已经定义了一些自定义的,像这样:

iconRegistry 
    .addSvgIcon('blah_icon', sanitizer.bypassSecurityTrustResourceUrl('images/blah.svg')) 

和自定义图标需要不同的标记结构,就像这样:

<md-icon svgIcon="{{item.icon}}"></md-icon> 

如何在重复列表中使用两者的混合?

你需要某种标志来说明它是核心还是自定义。然后,您可以使用ngIf呈现DOM

<md-nav-list> 
    <a md-list-item *ngFor="let item of items"> 
     <md-icon *ngIf="item.flag">{{item.icon}}</md-icon> 
     <md-icon *ngIf="!item.flag" svgIcon="{{item.icon}}"></md-icon> 
    </a> 
</md-nav-list> 

另一种选择是使用在模板[innerHTML]和更改图标字符串包括DOM:

<md-nav-list> 
    <a md-list-item *ngFor="let item of items" [innerHtml]="item.icon"></a> 
</md-nav-list> 

随着新item.icon是.. 。

'<md-icon>home</md-icon>'

'<md-icon svgIcon="blah_icon"></md-icon>'

+0

这基本上是我最终做的,虽然我正在检查自定义图标的名称。然而,我认为这是一个临时解决方案。重复的标记是丑陋的。 – isherwood

+0

我明白了。整个innerHTML字符串会被存储在数据库中吗? – isherwood