diff --git a/packages/components/avatar/__test__/index.test.js b/packages/components/avatar/__test__/index.test.js
index 5ae843532f..d3622081bc 100644
--- a/packages/components/avatar/__test__/index.test.js
+++ b/packages/components/avatar/__test__/index.test.js
@@ -82,6 +82,18 @@ describe('Avatar & Avatar Groups', () => {
await simulate.sleep(20);
expect($wrapper.dom.style.display).toBe('none');
});
+
+ it(':alt fallback when image load failed', async () => {
+ const comp = simulate.render(id);
+ comp.attach(document.createElement('parent-wrapper'));
+
+ const $image = comp.querySelector('.error-avatar-wrapper >>> #image');
+ $image.dispatchEvent('error');
+ await simulate.sleep(20);
+
+ const $text = comp.querySelector('.error-avatar-wrapper >>> .t-avatar__text');
+ expect($text.dom.textContent).toBe('avatar');
+ });
});
describe('Avatar Group Props', () => {
diff --git a/packages/components/avatar/avatar.ts b/packages/components/avatar/avatar.ts
index b12e4c2fed..9306f7b97d 100644
--- a/packages/components/avatar/avatar.ts
+++ b/packages/components/avatar/avatar.ts
@@ -26,6 +26,7 @@ export default class Avatar extends SuperComponent {
prefix,
classPrefix: name,
isShow: true,
+ isImageLoadFailed: false,
zIndex: 0,
windowWidth: systemInfo.windowWidth,
};
@@ -52,6 +53,11 @@ export default class Avatar extends SuperComponent {
...obj,
});
},
+ image() {
+ this.setData({
+ isImageLoadFailed: false,
+ });
+ },
};
methods = {
@@ -66,6 +72,10 @@ export default class Avatar extends SuperComponent {
this.setData({
isShow: false,
});
+ } else {
+ this.setData({
+ isImageLoadFailed: true,
+ });
}
this.triggerEvent('error', e.detail);
},
diff --git a/packages/components/avatar/avatar.wxml b/packages/components/avatar/avatar.wxml
index a851deb8ca..282fba87b6 100644
--- a/packages/components/avatar/avatar.wxml
+++ b/packages/components/avatar/avatar.wxml
@@ -28,7 +28,7 @@
aria-hidden="{{ ariaHidden }}"
>
-
+ {{alt}}
+