2016-06-19 49 views
3

我在我的项目中使用angular-cli,我想使用全局图像 - 我的网站徽标图像。如何到达公共目录

据我了解,该项目的根目录(angular-cli创建)的public目录用于公共资产 - 这似乎是一个放置我的图像的好地方(如果我错了,请纠正我)。

但是,当我尝试在<img src="/public/book4u-logo.svg" />标记中找到该图像时,我得到了404。原因当然是,我的项目根目录是src目录,而不是项目根目录。

那么,我应该怎么去那个目录?或者我应该把我的图像放在另一个目录中?

我的项目树(我删除不必要的SUFF):

. 
├── angular-cli-build.js 
├── angular-cli.json 
├── package.json 
├── public 
│ ├── book4u-logo.svg 
│ └── hero-image-default.jpg 
├── src 
│ ├── app 
│ │ ├── bfy.component.html 
│ │ ├── bfy.component.scss 
│ │ ├── bfy.component.ts 
│ │ ├── environment.ts 
│ ├── favicon.ico 
│ ├── index.html 
│ ├── main.ts 
│ ├── system-config.ts 
│ ├── tsconfig.json 
│ └── typings.d.ts 
├── tslint.json 
└── typings.json 

img标签是​​和图像本身是/public/book4u-logo.svg

+0

'SRC /共享/资产/ IMG /'是有道理的我。 –

+0

它应该只是''。'public /'中的所有内容都被复制到'dist /',这是您的应用的“根文件夹”。 – Sasxa

回答

6

Angular-cli将所有文件放在/dist目录中。

要index.html中显示的图像: <img src="book4u-logo.svg" />

如果你想用你的形象在你的应用程序,你应该在/src使用目录中的文件夹一样src/shared/assets/img/book4u-logo.svg

公共文件夹是公共资产并将内容复制到/dist文件夹。 但是,运行ng build --prod时,/public文件夹中的javascript未复制到/dist

Github上存在未解决的问题:Static JS assets not copying 放置在公用文件夹中的图像应该可以从dist文件夹访问。

5

最新版本的angular-cli(angular-cli: 1.0.0-beta.19-3)在src目录下提供了assets文件夹。你只需要添加的src属性的图像标签的下面, <img src="./assets/logo.png">

注意:当你建立一个使用ng serve将您assets文件夹复制到文件夹dist项目。

+0

明确表示您应该使用“./assets”而不是“ ./src/...“......用了几年时间在我的头上挠了挠头...... – 72GM

1

我在Angular 4中解决了一个类似的问题(我有一个公用文件夹中的css文件,我把它放在assets文件夹中)。 答案是:

  • 文件路径:./src/assets/book4u-logo.svg
  • <img src="./assets/book4u-logo.svg>