Angular 2アプリケーションのimage srcタグに、assetsフォルダ内の自分の画像の1つへの相対パスを入れようとしています。コンポーネントの変数を「fullImagePath」に設定し、それをテンプレートで使用しました。私はさまざまな方法を試してみましたが、私のイメージを引き出すことはできません。 Angular 2には、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>
アプリツリー*スペースを節約するためにノードモジュールフォルダを省略しました
├── 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
Angularはsrc/assets
フォルダを指すだけで、他にURL経由でアクセスするものは公開されていないので、フルパスを使用してください。
this.fullImagePath = '/assets/images/therealdealportfoliohero.jpg'
または
this.fullImagePath = 'assets/images/therealdealportfoliohero.jpg'
これは、ベースのhrefタグが/
で設定されている場合にのみ機能します。
angular/cli
にデータ用の他のフォルダを追加することもできます。変更する必要があるのはangular-cli.json
だけです
"assets": [
"assets",
"img",
"favicon.ico",
".htaccess"
]
編集時の注意:Distコマンドはアセットからすべての添付ファイルを検索しようとするので、モックjsonデータファイルもアセット内にあるように、アセット内のURLを介してアクセスしたいイメージおよびファイルを保持することも重要です。
資産フォルダが気に入らない場合は、.angular-cli.json
を編集して必要な他のフォルダを追加できます。
"assets": [
"assets",
"img",
"favicon.ico"
]
コンストラクタにfullPathname='assets/images/therealdealportfoliohero.jpg'
のような画像パスを追加します。それは間違いなく動作します。
私はAngular 4フロントエンドとウェブパックでAsp.Net Core角度テンプレートプロジェクトを使っています。私はイメージ名の前に '/ dist/assets/images /'を使用し、イメージをdistディレクトリのassets/imagesディレクトリに保存する必要がありました。例えば:
<img class="img-responsive" src="/dist/assets/images/UnitBadge.jpg">
アセットフォルダーにあなたのイメージを入れるだけで、そのリンクを使ってあなたのhtml
ページまたはts
ファイルでそれらを参照できます。