如何在 Angular2提供图像?

我试图把我的资产文件夹中的一个图像的相对路径在我的 Angular2应用程序的图像 src 标签。我将组件中的一个变量设置为“ fullImagePath”,并在模板中使用该变量。我已经尝试了很多不同的可能的路径,但似乎不能让我的形象。Angular2中是否有一些特殊的路径总是相对于像 Django 中的静态文件夹?

组件

import { Component, OnInit } from '@angular/core';


@Component({
selector: 'app-hero',
templateUrl: './hero.component.html',
styleUrls: ['./hero.component.css']
})


export class HeroComponent implements OnInit {
fullImagePath: string;


constructor() {
this.fullImagePath = '../../assets/images/therealdealportfoliohero.jpg'
}


ngOnInit() {
}


}

我还把图片放在同一个文件夹作为这个组件,因此,因为模板,并在同一个文件夹的 css 是工作,我不知道为什么一个类似的相对路径的图像不工作。该组件与位于同一文件夹中的图像是同一个组件。

import { Component, OnInit } from '@angular/core';


@Component({
selector: 'app-hero',
templateUrl: './hero.component.html',
styleUrls: ['./hero.component.css']
})


export class HeroComponent implements OnInit {
fullImagePath: string;


constructor() {
this.fullImagePath = './therealdealportfoliohero.jpg'
}


ngOnInit() {
}


}

Html

<div class="row">
<div class="col-xs-12">
<img [src]="fullImagePath">
</div>
</div>

App tree * 我省略了节点模块文件夹以节省空间

├── README.md
├── angular-cli.json
├── e2e
│   ├── app.e2e-spec.ts
│   ├── app.po.ts
│   └── tsconfig.json
├── karma.conf.js
├── package.json
├── protractor.conf.js
├── src
│   ├── app
│   │   ├── app.component.css
│   │   ├── app.component.html
│   │   ├── app.component.spec.ts
│   │   ├── app.component.ts
│   │   ├── app.module.ts
│   │   ├── hero
│   │   │   ├── hero.component.css
│   │   │   ├── hero.component.html
│   │   │   ├── hero.component.spec.ts
│   │   │   ├── hero.component.ts
│   │   │   └── portheropng.png
│   │   ├── index.ts
│   │   └── shared
│   │       └── index.ts
│   ├── assets
│   │   └── images
│   │       └── therealdealportfoliohero.jpg
│   ├── environments
│   │   ├── environment.dev.ts
│   │   ├── environment.prod.ts
│   │   └── environment.ts
│   ├── favicon.ico
│   ├── index.html
│   ├── main.ts
│   ├── polyfills.ts
│   ├── styles.css
│   ├── test.ts
│   ├── tsconfig.json
│   └── typings.d.ts
└── tslint.json
166337 次浏览

角度只指向 src/assets文件夹,没有其他公共访问通过网址,所以你应该使用完整的路径

 this.fullImagePath = '/assets/images/therealdealportfoliohero.jpg'

或者

 this.fullImagePath = 'assets/images/therealdealportfoliohero.jpg'

这只有在用 /设置 basehref 标记时才有效

还可以为 angular/cli中的数据添加其他文件夹。 所有您需要修改的是 angular-cli.json

"assets": [
"assets",
"img",
"favicon.ico",
".htaccess"
]

编辑注释: Dist 命令将尝试从资产中查找所有附件,因此保存图像和任何想要通过 URL 访问的文件也很重要,比如模拟 json 数据文件也应该在资产中。

在你的构造函数中添加你的图像路径,比如 fullPathname='assets/images/therealdealportfoliohero.jpg'

只要把你的图像在资产文件夹参考他们在您的 html页面或 ts文件与该链接。

如果您不喜欢资产文件夹,您可以编辑 .angular-cli.json并添加其他文件夹,您需要。

  "assets": [
"assets",
"img",
"favicon.ico"
]

我在用阿斯珀。净核心角模板项目与角4前端和网络包。我必须在映像名称前面使用’/dist/asset/images/’,并将映像存储在 dist 目录中的 asset/images 目录中。 例如:

 <img  class="img-responsive" src="/dist/assets/images/UnitBadge.jpg">

角度只有一个页面被请求从服务器,这是 index.html。而 index.html 和资产文件夹位于同一目录中。而把图像放在任何组件给出 src 值,如 assets\image.png。这将工作的很好,因为浏览器将请求服务器为该图像和 webpack 将能够服务该图像。

你可以像这样使用

用于 div 背景图像

<div style="min-height: fit-content;
background-image: url('/assets/Get-started-section.jpg'); background-size: cover; background-position:center;
width: 100%; ">
</div>

还有图像

 <img src="/assets/Get-started-section.jpg"/>