import { Component, Input, OnChanges } from '@angular/core'; @Component({ selector: 'qr-code', templateUrl: './qrcode.component.html', styleUrls: ['./qrcode.component.scss'] }) export class QRCodeComponent { @Input() txt:string = 'lenta.ru'; saveAsImage(parent: any, btn:any) { let parentElement = parent.qrcElement.nativeElement .querySelector("canvas") .toDataURL("image/png") if (parentElement) { let blobData = this.convertBase64ToBlob(parentElement) const blob = new Blob([blobData], { type: "image/png" }) const url = window.URL.createObjectURL(blob) const link = document.createElement("a") btn.href = url btn.download = "angularx-qrcode" } } private convertBase64ToBlob(Base64Image: string) { const parts = Base64Image.split(";base64,") const imageType = parts[0].split(":")[1] const decodedData = window.atob(parts[1]) const uInt8Array = new Uint8Array(decodedData.length) for (let i = 0; i < decodedData.length; ++i) { uInt8Array[i] = decodedData.charCodeAt(i) } return new Blob([uInt8Array], { type: imageType }) } }