尽管我使用 icomoon 生成了 SVG,但为了提供软可用性,我为它创建了一个组件,并意识到在此之前这是足够好的实践。一些图标只是变成空白。而且我仍然找不到导致这种行为的原因。我已经调查了 Stack Overflow 上的所有问题(不仅如此),但没有找到任何解决我的问题的解决方案。
我在 index.html 中预取了 symbol-defs.svg(symbol-defs.svg 的大小 ~ 200kb):
<link rel="prefetch" href="assets/icon/symbol-defs.svg" as="image" />
结果,我得到了这个:
大多数图标的空白空间。
图标组件:
@Component({
selector: 'icon',
templateUrl: './icon.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class IconComponent {
@Input()
set icon(icon: string) {
this.use = icon ? `${this.location}#${icon}` : '';
}
use: string;
location: string = 'assets/icon/symbol-defs.svg';
}
图标组件 HTML:
<svg>
<use [attr.xlink:href]="use" [attr.href]="use"></use>
</svg>
用法:
<icon icon="finance-service"></icon>
更新:
此问题仅在开发模式下的prod模式下出现,它表现良好。