angularアプリをangular CLIを使用してセットアップし、componentsディレクトリにイメージを持つコンポーネントを作成しました。
例えば:
app/
---/common-components
------/header
---------/header.component.ts
---------/header.component.css
---------/images
--------------/image.png
CSSファイル内では、次のスタイルを使用しています。
.image {
background-url: url('images/image.png');
}
アプリケーションを実行すると、304 Not Modifiedが表示され、プレビューでは画像が表示されません。絶対パス「/ src/app/common-components/header/images」を使用すると、ファイルは適切にロードされます。しかし、これは理想的ではありません。なぜなら、コンポーネントが自己充足的であることを望んでいるからです。
与えられる応答は次のとおりです。
Request URL:http://localhost:4201/images/test-image.jpeg
Request Method:GET
Status Code:304 Not Modified
Remote Address:127.0.0.1:4201
空白のプレビューで
すべての静的アセットファイル/ディレクトリは、angular-cli.json
ファイルにリストする必要があります。
アセットを追加するには、次のいずれかを実行できます。
assets
フォルダー(angular-cli.json
ファイルに既にリストされています)に入れます。app/
内に新しいディレクトリを追加します(たとえば、app/images
を使用し、angular-cli.json
でそれを参照できます)angular-cli.json:
{
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico",
"images"
]
}
]
}
コメントで言及されている@ jali-aiのようにbackground-url
はbackground-image
である必要があり、次のようにアセットを参照できます。
.image {
background-image: url('images/image.png');
}
angular-cli.jsonファイル および reference のアセットの例を次に示します
それはまだ角度CLIとwebpack(1.0.3を使用)の問題のようです。
アセットフォルダーを_angular-cli.json
_に追加し、パスを相対的に定義すると、ビルドは失敗し、ressources url('someRelativeLink')
が見つかりません。
私は回避策を使用して、すべてのCSS定義を次の場所に配置しました。
_@Component({
styles: [...]
})
_
styleUrls
ファイルの代わり。
すべてが大丈夫だったことをdoinigした後。
.image {
background-image: url('./assets/images/image.png');
}