cuando se carga el lienzo por primera vez, background.src está vacío. En el diálogo (el diálogo está en el segundo componente) subo IMG pero después del éxito, background.src todavía está vacío, necesito actualizar la aplicación para obtener background.src = this.src ;.
Cómo configurar observable para cambiar background.src después de cargar para llamar nuevamente this.src = this.srcService.getImgURL(this.id) // returned string 'https://something.com/image/1234' , porque el lienzo ya está ¿cargado?
¿O tal vez algo más en lugar de observable?
Traté de configurar el tiempo de espera con 1 segundo en segundo plano src y esto está funcionando, pero setTimeout no es una opción para usar en nuestra aplicación.
No puedo usar background.onload = () => {...} porque necesito src antes de esto.
Gracias
primer componente
export class FirstComponent implements AfterViewInit { @ViewChild('canvas', { static: true }) canvas: ElementRef<HTMLCanvasElement>; ngAfterViewInit() { this.src = this.srcService.getImgURL(this.id) // returned string 'https://something.com/image/1234' const background = new Image(); background.src = this.src; } }Segundo componente El segundo componente es un diálogo donde elijo y subo la imagen
export class SecondComponent implements { constructor( @Inject(MAT_DIALOG_DATA) public data: IInterface, public dialogRef: MatDialogRef<SettingsComponent>) ( ... ) close() { this.dialogRef.close(null); } }Después de que se cargue la imagen, también debe configurar el fondo del lienzo usando el contexto 2d:
ngAfterViewInit() { this.src = this.srcService.getImgURL(this.id); const background = new Image(); background.src = this.src; background.onload = () => { const ctx = this.canvas.getContext("2d"); ctx.drawImage(background, 0, 0); } }