我在我的项目中使用了angular2和webpack2。如何从angular2和webpack中的动态src载入图像?
我的同事从Angular2 QuickStart开始项目,然后将其移至Webpack环境。
我用html-loader
加载组件templats和使用url-loader
提取图像和字体:
{
test: /\.html$/,
loader: 'html-loader'
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
use: 'url-loader?limit=1000&name=assets/[name].[hash].[ext]'
},
的模板是这样的:
<section class="creation-mobile">
<img src="../../../images/camera/cn/mobile/creation.jpg" alt="" class="img-cn">
<img src="../../../images/camera/en/mobile/creation.jpg" alt="" class="img-en">
</section>
当我盖了,的WebPack可以找到图像并将它们导出到asstes/
。
<li *ngFor="let i of [1,2,3]" class="item{{i}} m1-view">
<div class="{{lang}}-video-view">
<img src="../../../images/os/{{lang}}/medium/one-step{{i}}{{deviceRatio == 1?'':'@2x'}}.jpg">
<video class="video-medium" preload="auto" src="../../../videos/os/{{lang}}/medium/one-step-{{i}}{{deviceRatio == 1?'':'@2x'}}.mp4" [video-play]="onestepVideoState[i-1]"></video>
<img src="../../../images/os/{{lang}}/large/one-step{{i}}{{deviceRatio == 1?'':'@2x'}}.jpg">
<video class="video-large" preload="auto" src="../../../videos/os/{{lang}}/large/one-step-{{i}}{{deviceRatio == 1?'':'@2x'}}.mp4" [video-play]="onestepVideoState[i-1]"></video>
</div>
<a class="replay" [innerHTML]="os.replay.title" [ngClass]="{'active': onestepReplayState[i-1]}" (click)="onestepReplay(i-1)"></a>
</li>
像../../../images/os/{{lang}}/medium/one-step{{i}}{{deviceRatio == 1?'':'@2x'}}.jpg
在src包含{{lang}}
和{{i}}
和{{deviceRatio == 1?'':'@2x'}}
获取不同的资源,url-loader
无法解决此网址类型:
它,直到我遇到这样的模板工作正常。
我们必须传播出*ngFor
并使用ngif
,写大量的<img>
标签来导入图像。
有没有一些方法来加载angular2和webpack这种类型的网址?
ADD1:对不起,忘了申报,lang
和deviceRatio
是依赖于浏览器环境,所以价值是无法确定时所建。 lang
的值将是cn
和en
之一,因此我们要将../../../images/os/en/medium/..xxx.jpg
和../../../images/os/cn/medium/..xxx.jpg
加载到最终的dist目录。
的[选择性地从与angular2的WebPack排除动态图像路径]可能的复制(http://stackoverflow.com/questions/38205980/selectively-exclude-dynamic-image-paths-from-webpack-与-angular2) – smnbbrv