如何在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>'
这基本上是我最终做的,虽然我正在检查自定义图标的名称。然而,我认为这是一个临时解决方案。重复的标记是丑陋的。 – isherwood
其他选项:在您的中使用[innerHTML],并将两个不同的DOM项目作为字符串或将所有材质图标添加为自定义字体,并使用svgIcon输入将其全部渲染。 –
我明白了。整个innerHTML字符串会被存储在数据库中吗? – isherwood