我用 Angular Cli 创建了一个自定义库。它具有以下结构:
- dist
- projects
- customLib
- src
- assets
- icons
- lib
- button
按钮组件作为 Input() 获取将在按钮内显示的 svg 图标的名称:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'lib-button',
templateUrl: './button.component.html',
styleUrls: ['./button.component.scss']
})
export class ButtonComponent implements OnInit {
svgIconUrl: string;
constructor() {
}
ngOnInit() {
if (this.icon) {
this.svgIconUrl = '../../assets/icons/' + this.icon + '.svg';
}
}}
按钮组件的html:
<button>
<div *ngIf="svgIconUrl">
<svg-icon [src]="svgIconUrl"></svg-icon>
</div>
</button>
我制作了一个脚本,它复制所有图标(存储在 src/assets/icons 中)并将其粘贴到 dist 文件夹中。所有这一切都很好。然后,我在 bitbucket 上发布了我的库,并将它安装在另一个 Angular 应用程序中。库已正确导入,但 angular-svg-icon 无法找到 svg,因为它正在 localhost:4200/#/assets/icons/myicon.svg 中获取 svg
当然它没有找到 svg,因为它在库中,所以它在“node_modules”文件夹中。我如何强制库的按钮组件在库中获取 svg,所以使用相对路径?
这是我使用按钮的 Angular 应用程序(正在导入和使用库)中的 html:
<lib-button icon="icon-magic"></lib-button>