@@ -261,7 +261,10 @@ export class NzWaterMarkComponent implements AfterViewInit, OnInit, OnChanges, O
261
261
262
262
if ( this . nzImage ) {
263
263
const img = new Image ( ) ;
264
- img . onload = ( ) => {
264
+
265
+ const onLoad = ( ) : void => {
266
+ cleanup ( ) ;
267
+
265
268
ctx . drawImage ( img , drawX , drawY , drawWidth , drawHeight ) ;
266
269
267
270
/** Draw interleaved pictures after rotation */
@@ -270,7 +273,10 @@ export class NzWaterMarkComponent implements AfterViewInit, OnInit, OnChanges, O
270
273
ctx . drawImage ( img , alternateDrawX , alternateDrawY , drawWidth , drawHeight ) ;
271
274
this . appendWatermark ( canvas . toDataURL ( ) , markWidth ) ;
272
275
} ;
273
- img . onerror = ( ) =>
276
+
277
+ const onError = ( ) : void => {
278
+ cleanup ( ) ;
279
+
274
280
this . drawText (
275
281
canvas ,
276
282
ctx ,
@@ -284,6 +290,16 @@ export class NzWaterMarkComponent implements AfterViewInit, OnInit, OnChanges, O
284
290
alternateDrawY ,
285
291
markWidth
286
292
) ;
293
+ } ;
294
+
295
+ const cleanup = ( ) : void => {
296
+ img . removeEventListener ( 'load' , onLoad ) ;
297
+ img . removeEventListener ( 'error' , onError ) ;
298
+ } ;
299
+
300
+ img . addEventListener ( 'load' , onLoad ) ;
301
+ img . addEventListener ( 'error' , onError ) ;
302
+
287
303
img . crossOrigin = 'anonymous' ;
288
304
img . referrerPolicy = 'no-referrer' ;
289
305
img . src = this . nzImage ;
0 commit comments