如何在 Angular 库中包含图像?

eli*_*eli 9 angular

我创建了一个简单的 Angular 库,我希望我的库也显示图像。问题是,如果我将图像包含在库的模块文件夹中,然后从模块内部引用它,则会出现 404 错误。据我所知,在 Angular 项目中,图像必须放在 /assets 文件夹中,但我确实需要将此图像包含在我的库中。

我将图像放在模块文件夹中,并从.html我的模块组件的文件中引用它:<img src="myImage.png">,但它不起作用。

Est*_*ask 8

这里有几个选项,没有一个是完美的。

图像可以使用 base64 编码为数据 URL 并用于内联模板:

<img src="data:image/jpg;base64,...">
Run Code Online (Sandbox Code Playgroud)

或者绑定到包含数据 URL 的组件属性:

<img [src]="imageFoo">
Run Code Online (Sandbox Code Playgroud)

图像可以与包一起包含,并且可以指示用户将它们复制到网站公共目录中。由于公共路径事先未知,模块可以接受常规forRoot方法的图像路径配置并将其用于图像路径:

@Component({
  ...
  template: `<img src="{{imagesPath}}/foo.jpg">`
})
class SomeComponent {
  constructor(@Inject(IMAGES_PATH) public imagesPath: string) {}
}
Run Code Online (Sandbox Code Playgroud)

  • @GarySheppard我很长一段时间没有重新讨论这个问题,可能有更方便的选择。我会尝试通过文件加载器动态导入图像 url 的自定义图像组件,如此处所述 https://webpack.js.org/guides/asset-modules/ 。无法确定此配置是否适用于 Angular CLI。有些框架会更进一步,进行“src”转换,但这对于 Angular 来说太简单了。 (2认同)