我正在使用Angular 2
,我需要检测图片是否已加载到图片代码中。
是否有事件发生?
这样的事情:
<img [src]="imagesource" [loaded]="dosomething()">
答案 0 :(得分:83)
<img [src]="imagesource" (load)="dosomething()">
答案 1 :(得分:0)
扩展第一个答案以检查刚刚加载的图像。
<img [src]="imagesource" (load)="onImageLoad($event)">
onImageLoad(evt) {
if (evt && evt.target) {
const width = evt.target.naturalWidth;
const height = evt.target.naturalHeight;
const portrait = height > width ? true : false;
console.log(width, height, 'portrait: ', portrait);
}
}
但是,我看到chrome两次发送事件,大小不同!从evt.scrElement.x和y为零的事件中,我能够检测到正确的大小。但这并非总是如此,我不确定为什么会有两个事件?
onImageLoad(evt) {
if (evt && evt.target) {
const x = evt.srcElement.x;
const y = evt.srcElement.y;
if ((x === 0 ) && (y === 0)) {
const width = evt.srcElement.width;
const height = evt.srcElement.height;
portrait = height > width ? true : false;
console.log('Loaded: ', width, height, 'portrait: ', portrait);
}
}
}