johnpapa Angular 2样式指南建议逐个功能的方法.我明白了,你可以自制小角度组件,可以重复使用.
所以,我创建了一个我想在另一个项目中重用的组件,并把它放在它自己的文件夹中.我还添加了一个图像,我希望这个组件显示在同一个文件夹中,所以它都是自包含的.
<img class="logo" src="logo.png"/>
Run Code Online (Sandbox Code Playgroud)
但是这会尝试从root加载图像localhost:3000/logo.png.
我想这意味着我必须实际使用图像的确切路径,但这不会破坏其他人可以在其他项目中重用的组件的整体想法吗?
对此有何建议?
编辑以澄清 我正在使用Angular 2快速入门中的文件夹结构,这意味着我的根文件夹是:
app/
node_modules/
index.html
package.json
tsconfig.json
Run Code Online (Sandbox Code Playgroud)
所以,即使我使用path header/logo.png,它也不起作用.我必须做app/header/logo.png.这实际上是一条绝对路径,如果我添加一个前导斜杠:"/ app/header/logo.png",它实际上也同样有效.任何小于完整路径的东西都会破坏链接.意思是如果有人想要重复使用它们,则必须具有完全相同的文件夹结构.
我想这只是它的工作原理,我只是学习Angular 2,但在我看来我应该能够从组件文件夹中加载资源,就像我可以使用模板或css一样
在构建和打包Angular 6库时,我似乎无法指示Angular CLI将库的资源复制到dist/assets每个构建的文件夹中.
假设项目的文件夹结构是这样的 -
- dist
- e2e
- node_modules
- projects
- lib1
- src
- lib
- assets
- icons
- src
Run Code Online (Sandbox Code Playgroud)
当我运行ng build lib1或ng build lib1 --prod在assets/icons文件夹不被复制到dist/lib1/assets/icons.
如果我跑ng build那么src/assets(根SRC /资产)被复制,但没有projects/lib1/assets.
该angular.json文件包含"assets": ["src/assets"]对它的引用,但它不允许将assets密钥专门添加到项目中,只允许添加到主根应用程序.添加时,我收到以下错误:
架构验证失败,出现以下错误:数据路径""不应具有其他属性(资产).
我还尝试将以下自定义复制规则添加到资源,以将资产复制到dist/lib而不是dist/appname:
"assets": [
"src/favicon.ico",
"src/assets",
{ "glob": "**/*", "input": "src/assets/icons", "output": "../lib1/assets/icons" }
],
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
无法将资产写入输出路径之外的位置.
是否有在每个构建中管理库资产副本的内置方法?
更新06/05/2018
我向Angular CLI提出了一个问题,但尚未收到回复.问题#11701