我目前正在构建一个Angular应用程序,我试图根据其他地方的配置加载客户的徽标。
我试图将此文件加载到我的home.component.html
我创建了一个" CustomerService"它有一个函数getLogo(),它本身返回客户的标识路径。
我的文件夹结构如下:
FOLDER STRUCTURE IMAGE
资产文件夹包含图片,下面的HTML可在 home.component.html
我知道" ../../" 不是要走的路,所以我的第一个问题是我能怎样做解决这个问题。
我创建了以下HTML结构:
<img src="../../assets/timeblockr-logo.png" />
<img [src]="customerservice.getLogo()" />
CustomerService的getLogo函数返回以下内容:
getLogo() {
return "../../assets/timeblockr-logo.png";
}
原来我必须使用:
getLogo(): string{
return require("../assets/timeblockr-logo.png");
}
特别感谢@Niladri解决此问题的方法!
答案 0 :(得分:3)
您的图片来源不应包含 ../../
。图像路径在输出文件夹中是相对的。只需改为:
<img src="assets/timeblockr-logo.png" />
<img [src]="customerservice.getLogo()" />
你的功能应该是:
getLogo(): string {
return "assets/timeblockr-logo.png";
}
根据您的意见,您需要将 "assets"
中的 .angular-cli.json
条目更改为:
"assets": [
"assets",
"favicon.ico",
{
"glob": "**/*",
"input": "./assets/images/",
"output": "./assets/images/",
"allowOutsideOutDir": false
}
],
答案 1 :(得分:2)
Webpack使用url-loader
加载角度项目中带有扩展名.png,.jpg
等的图像。请查看github https://github.com/webpack-contrib/url-loader
url-loader
repo的以下代码
module.exports = {
module: {
rules: [
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192
}
}
]
}
]
}
}
它会查找具有上述扩展名的图像文件。但是我们需要对Webpack的实际图像路径使用require
语句来理解图像的路径,以便它可以拾取它们。这在.ts
/ typescript文件中是必需的,同时使用图像的路径作为变量或从方法返回路径值。第一个图片标签
<img src="../../assets/timeblockr-logo.png" />
正在运行,因为Webpack将html-loader
用于.html
个文件,这会自动使用捆绑的图片网址替换图片代码上的src属性值。
因此,您的getLogo()
方法应如下所示
getLogo():string {
return require("../assets/timeblockr-logo.png");
}
答案 2 :(得分:1)
更改<img [src]="customerservice.getLogo()" />
至<img [attr.src]="customerservice.getLogo()" />
详细了解Attribute Binding。