私はAngularが初めてのので、これを実行するのがベストプラクティスかどうかわかりません。
新しいアプリを生成するためにangular-cliとng new some-project
を使いました。
その中に "assets"フォルダの中に "images"フォルダを作成したので、今私のimagesフォルダはsrc/assets/images
です。
app.component.html
(これは私のアプリケーションのルートです)に、
<img class="img-responsive" src="assets/images/myimage.png">
Webアプリケーションを表示するためにng serve
を実行すると、画像が表示されません。
Angularアプリケーションで画像を読み込むためのベストプラクティスは何ですか?
編集:以下の答えを参照してください。私の実際の画像名はスペースを使用していました、Angularは好きではありませんでした。ファイル名のスペースを削除すると、画像は正しく表示されました。
それを私が直した。私の実際の画像ファイル名にはスペースが含まれていましたが、何らかの理由でAngularはそれを好まなかったのです。ファイル名からスペースを削除すると、assets/images/myimage.png
が機能しました。
私のプロジェクトでは、私は私のapp.component.htmlで以下の構文を使用しています。
<img src="assets/img/1.jpg" alt="image">
または
<img src='http://mruanova.com/img/1.jpg' alt='image'>
補間を使用してプロパティをバインドするときは、テンプレート式として[src]を使用します。
<img [src]="imagePath" />
と同じです。
<img src={{imagePath}} />
Angular 2〜5に固有なので、以下のようにプロパティバインディングを使用してイメージパスをバインドできます。イメージパスは一重引用符で囲みます。
サンプル例
<img [src]="'assets/img/klogo.png'" alt="image">
Angular-cliのデフォルトでは、アセットフォルダがビルドオプションに含まれています。画像の名前にスペースまたはダッシュがあると、この問題が発生しました。例えば :
画像をassets/imgフォルダに置いた場合、このコード行はテンプレート内で機能するはずです。
<img alt="My image name" src="./assets/img/myImageName.png">
問題が解決しない場合は、Angular-cli設定ファイルを確認し、自分のアセットフォルダがビルドオプションに追加されていることを確認してください。
通常、 "app"はあなたのアプリケーションのルートです - あなたはapp/path/to/assets/img.png
を試しましたか?
1。この行をコンポーネントの一番上に追加します。
declare var require: any
2。この行をコンポーネントクラスに追加します。
imgname= require("../images/imgname.png");
hTMLページのimg srcタグにこの 'imgname'を追加してください。
<img src={{imgname}} alt="">