访问组件库中的图像
Access images in component library
我有一个 Angular 7 组件库,我正在尝试为按钮等添加一些图像。
我的项目结构是这样的
projects
components
src
lib
myComponent
assets
images
image.png
我尝试在其中使用图像的组件与 "assests" 文件夹处于同一级别。
例如我添加了这个按钮
<p>
<button (click)="activateSelect()"><i
src="../../assets/images/tempImage.png"></i></button>
</p>
...但是当我在 Chrome 中构建和使用开发工具来查看按钮时,图像的路径是
http://localhost/assets/images/tempImage.png
路由似乎无法正常工作?
我试过相对路径“./”,只是将路径放入其中,但没有任何效果。这似乎比它应该的更难,所以我确定我不了解它是如何工作的。
非常感谢任何帮助。
更新
我从来没有在按钮上使用图像,但我用 "img" 标签替换了 "button" 标签并让它像这样工作...
<img style="background-color: aliceblue;width:35px;height:35px"
(click)="activateSelect()" src="assets/tempSelect.png">
更新 2
如果您想要应用程序的 "assets" 文件夹中的图像,则以上方法有效。我正在构建一个组件库,我需要我的资产随身携带...有没有办法在组件库中创建一个包含资产的文件夹,您可以使用组件库构建和公开该文件夹?
更新 3
为了将您的图像放入您的组件库中以便所有内容都是独立的,您需要使用一种工具来对您的图像进行 base 64 编码。
我用了 https://base64.guru/converter/encode/image
一旦进入工具 select 您的图像,然后选择 "Output Format"
我用了 "Data URI -- data:content/type;base64"
然后点击"Encode image to base 64"按钮
这将输出这样的字符串
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsSAAALEgHS3X78AAABTElEQVRIie2WwY2DMBBFX1YpICVQQkpwCSmBk+dKCSmB69wogRIowSW4BDpgDx4kFIEwISG7Ur7kAxqL5+/5Bp+GYeAT+vkI9Qv+s2ARqQ8Hi4gDylfBtzgugBpwIlIeDQ6AA+4icj0K7ICgqj1QAo2IXI4AF6oaAVS1AxobbwfH6YOq1kAvIve3gS3RcaZUATervx4MXOfAD/0u3gEugG6uoKqB5LzdErZdjifwFmhJ5zxPwzCsDu99zJzXee/LnLnntYXZ9i26FZHG6sEc1yISrAWLWgWTtjlMFlEDlQUL0oelsnmFLaIihW43ONqRaYDeYK3VO6BX1XvGuzaDLyQHN5KrR7BjIfVLykl1gbm0vo2gUY/PecpJ4Ex6g/f+sjX103F65nprl4FIaoGzXXHjTyRHOT2eU0NKbgeUW4CjnnL8Cv2PW+YXvEe/8QAaBBU+rp8AAAAASUVORK5CYII=
如您所见,上面是 "png" 图片,请确保此 属性 与您使用的图片类型相匹配。
一旦你有了这个字符串,你就可以在你的组件中为它设置一个变量,并将这个访问器添加到你想要你的图像的元素中
[src]="YourImageVariable"
这不适用于按钮,因为 [src] 不知道 属性 按钮,但它可以与
一起使用
在我的项目中我使用了../../../assets/images/icon/multi-y-axis-20x20.png
您使用 ..
上层文件夹。
试试这个:
src="assets/images/tempImage.png"
如您所说,为什么不将图像存储在 src/asset 目录中?它应该工作。我看到您在组件文件夹中有一个资产文件夹,其他组件是否也一样?
无论如何,如果你想要 angular 服务存储在 src/asset 之外的资产,你必须告诉 angular 你这样做了,否则 angular 会看到它是一个路由 url而不是图片 url
在angular.json中寻找
"assets": [
"src/favicon.ico",
"src/assets"
],
在此处添加您自己的资产文件夹
"assets": [
"src/favicon.ico",
"src/assets",
"src/lib/myComponent/assets"
],
由于库组件没有项目根目录,所以它总是从主项目根目录获取资产,即我们正在使用库的资产文件夹。
因此您必须使用 base64 数据 URL 或 CDN 图像。
您可以将图像编码为 base64 数据 URL 并像
一样使用它们
<img src="data:image/jpg;base64,...">
或绑定到组件 属性
<img [src]="imageFoo">
我有一个 Angular 7 组件库,我正在尝试为按钮等添加一些图像。
我的项目结构是这样的
projects
components
src
lib
myComponent
assets
images
image.png
我尝试在其中使用图像的组件与 "assests" 文件夹处于同一级别。
例如我添加了这个按钮
<p>
<button (click)="activateSelect()"><i
src="../../assets/images/tempImage.png"></i></button>
</p>
...但是当我在 Chrome 中构建和使用开发工具来查看按钮时,图像的路径是 http://localhost/assets/images/tempImage.png
路由似乎无法正常工作?
我试过相对路径“./”,只是将路径放入其中,但没有任何效果。这似乎比它应该的更难,所以我确定我不了解它是如何工作的。
非常感谢任何帮助。
更新 我从来没有在按钮上使用图像,但我用 "img" 标签替换了 "button" 标签并让它像这样工作...
<img style="background-color: aliceblue;width:35px;height:35px"
(click)="activateSelect()" src="assets/tempSelect.png">
更新 2 如果您想要应用程序的 "assets" 文件夹中的图像,则以上方法有效。我正在构建一个组件库,我需要我的资产随身携带...有没有办法在组件库中创建一个包含资产的文件夹,您可以使用组件库构建和公开该文件夹?
更新 3 为了将您的图像放入您的组件库中以便所有内容都是独立的,您需要使用一种工具来对您的图像进行 base 64 编码。 我用了 https://base64.guru/converter/encode/image 一旦进入工具 select 您的图像,然后选择 "Output Format" 我用了 "Data URI -- data:content/type;base64" 然后点击"Encode image to base 64"按钮 这将输出这样的字符串
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsSAAALEgHS3X78AAABTElEQVRIie2WwY2DMBBFX1YpICVQQkpwCSmBk+dKCSmB69wogRIowSW4BDpgDx4kFIEwISG7Ur7kAxqL5+/5Bp+GYeAT+vkI9Qv+s2ARqQ8Hi4gDylfBtzgugBpwIlIeDQ6AA+4icj0K7ICgqj1QAo2IXI4AF6oaAVS1AxobbwfH6YOq1kAvIve3gS3RcaZUATervx4MXOfAD/0u3gEugG6uoKqB5LzdErZdjifwFmhJ5zxPwzCsDu99zJzXee/LnLnntYXZ9i26FZHG6sEc1yISrAWLWgWTtjlMFlEDlQUL0oelsnmFLaIihW43ONqRaYDeYK3VO6BX1XvGuzaDLyQHN5KrR7BjIfVLykl1gbm0vo2gUY/PecpJ4Ex6g/f+sjX103F65nprl4FIaoGzXXHjTyRHOT2eU0NKbgeUW4CjnnL8Cv2PW+YXvEe/8QAaBBU+rp8AAAAASUVORK5CYII=
如您所见,上面是 "png" 图片,请确保此 属性 与您使用的图片类型相匹配。
一旦你有了这个字符串,你就可以在你的组件中为它设置一个变量,并将这个访问器添加到你想要你的图像的元素中
[src]="YourImageVariable"
这不适用于按钮,因为 [src] 不知道 属性 按钮,但它可以与
一起使用在我的项目中我使用了../../../assets/images/icon/multi-y-axis-20x20.png
您使用 ..
上层文件夹。
试试这个:
src="assets/images/tempImage.png"
如您所说,为什么不将图像存储在 src/asset 目录中?它应该工作。我看到您在组件文件夹中有一个资产文件夹,其他组件是否也一样? 无论如何,如果你想要 angular 服务存储在 src/asset 之外的资产,你必须告诉 angular 你这样做了,否则 angular 会看到它是一个路由 url而不是图片 url
在angular.json中寻找
"assets": [
"src/favicon.ico",
"src/assets"
],
在此处添加您自己的资产文件夹
"assets": [
"src/favicon.ico",
"src/assets",
"src/lib/myComponent/assets"
],
由于库组件没有项目根目录,所以它总是从主项目根目录获取资产,即我们正在使用库的资产文件夹。
因此您必须使用 base64 数据 URL 或 CDN 图像。
您可以将图像编码为 base64 数据 URL 并像
一样使用它们<img src="data:image/jpg;base64,...">
或绑定到组件 属性
<img [src]="imageFoo">