Angular:从资产文件夹中读取所有文件

mas*_*oda 5 angular-material2 angular

tltr:我可以从 angular 访问资产目录吗?

我在一个文件夹src/assets/icons中有一堆 SVG ,我使用mat-icon. 唯一的缺点是当我添加一个新图标时,我必须添加文件,我必须将文件名添加到我用来循环添加到matIconRegistry. 有没有办法简单地从目录中读取所有文件?

这是我目前的解决方案:

@NgModule()
export class CustomIconModule {
  constructor(
    private matIconRegistry: MatIconRegistry,
    private domSanitizer: DomSanitizer
  ) {
    const icons = [
      'icon1', 'icon2',
    ];

    for (const icon of icons) {
      this.matIconRegistry.addSvgIconInNamespace(
        'my-namespace',
        icon,
        domSanitizer.bypassSecurityTrustResourceUrl(`./assets/icons/${icon}.svg`)
      );
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

更新:我编写了一个 bash 脚本,它循环遍历文件,生成一个 .ts 文件,其中包含所有文件名的数组并执行 .ts 文件git add。我在 pre-commit git hook 中运行它。不理想,但它现在有点工作。不过,我很想找到一个纯 JS 解决方案。