将大量的自定义图标注册到mat-icon

时间:2019-10-30 06:29:47

标签: angular angular-material

我想知道是否有一种快速干净的方法将整个目录注册到mat-icon注册机制。

到目前为止,我所做的是将图标名称保存在列表中,然后在列表中进行迭代以注册它们,但是我对每次我必须将新图标名称添加到列表中的事实感到不满意。正在添加图标。

这是我的代码:

const ICONS_TO_ADD = {
  'general': ['follow', 'email', 'calendar', 'recommendation', 'follow_reg', 'follow_reg_on']
};

export class AppComponent {

  constructor( private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer,) {
    this.addIcons();
  }

  private addIcons() {
    for (const dirName of Object.keys(ICONS_TO_ADD)) {
      ICONS_TO_ADD[dirName].forEach(fileName => {
        const res = this.matIconRegistry.addSvgIcon(
          `${dirName}_${fileName}`,
          this.domSanitizer.bypassSecurityTrustResourceUrl(`../assets/svg/${dirName}/${fileName}.svg`)
        );
      });
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您可以编写一个自定义任务以从目录列表自动生成该列表。理想情况是在仅包含此列表的文件中,这样您就可以轻松覆盖。

然后在构建之前运行该任务