UNPKG

angularx-qrcode

Version:

Simple QRCode module generator for Angular 4-21 and Ionic 3-8 using node-qrcode

263 lines (196 loc) 10.4 kB
# angularx-qrcode - Angular QR Code Generator `angularx-qrcode` - a fast and easy-to-use Angular QR Code Generator library - Compatible with **Angular 21** and **Ionic** - Under active development - Standalone component support - Ivy compiler support, AOT, SSR (Server Side Rendering) - Accessibility (a11y) attributes supported (alt, aria-label, title) - Support for images - Trusted and used by thousands of developers like you - Easy to use, [sample web app](#demo-app) included `angularx-qrcode` is compatible with Ionic 3-8 and Angular 4-21 with support for the Ivy compiler. It is a drop-in replacement for the no-longer-maintained angular component ng2-qrcode and based on node-qrcode. - [Installation](#installation) - [Demo App](#demo-app) - [Usage & Example Implementations](#usage-and-example-implementations) - [Available Parameters](#available-parameters) - [Contribute](#contribute) - [Sponsoring](#sponsoring) - [License](#license) ![QR Codes generated by angularx-qrcode](https://github.com/Cordobo/angularx-qrcode/raw/main/angularx-qrcode.webp 'QR Codes generated by angularx-qrcode') Different QR Code styles: regular, with image/logo, custom colors. Generate your own QR Code here: [angular qr code web app](https://cordobo.github.io/angularx-qrcode/) ## Installation **Angular 21 and Ionic with angularx-qrcode 21** ```console # npm npm install angularx-qrcode # yarn yarn add angularx-qrcode # pnpm pnpm add angularx-qrcode ``` **Angular 20 and Ionic with angularx-qrcode 20** ```console npm install angularx-qrcode@20.0.0 --save # Or with yarn yarn add angularx-qrcode@20.0.0 ``` **Angular 19 and Ionic with angularx-qrcode 19** ```console npm install angularx-qrcode@19.0.0 --save # Or with yarn yarn add angularx-qrcode@19.0.0 ``` **Angular 18 and Ionic with angularx-qrcode 18** ```console npm install angularx-qrcode@18.0.2 --save # Or with yarn yarn add angularx-qrcode@18.0.2 ``` **All supported angular versions** | Angular Version | angularx-qrcode Version | | --------------- | ----------------------- | | ^21 | ^21.0.5 | | ^20 | ^20.0.0 | | ^19 | ^19.0.0 | | ^18 | ^18.0.2 | | ^17 | ^17.0.1 | | ^16 | ^16.0.2 | | ^15 | ^15.0.1 | | ^14 | ^14.0.0 | | ^13 | ^13.0.15 | | ^12 | ^12.0.3 | | ^11 | ^11.0.0 | | ^10 | ^10.0.12 | | ^9 | ^2.3.7 | | ^8 | ^2.1.4 | | ^5 / ^6 / ^7 | ^1.6.4 | | ^4 | ^1.0.3 | # Demo App **[Working online demo of Angular QR Code Generator](https://cordobo.github.io/angularx-qrcode/)** The source for the working angular app is available in [`projects/demo-app`](projects/demo-app). Run the command: ``` npm start ``` and open the url `http://localhost:4200/` in your browser # Usage and Example Implementations The source for **[a live angularx-qrcode demo app](https://cordobo.github.io/angularx-qrcode/)** and more examples how to implement angularx-qrcode is located in the directory [`projects/demo-app`](projects/demo-app/src/app) of this repository. ### Upgrade angularx-qrcode from angularx-qrcode 18 and earlier Since Angular 19, the latest version of the angularx-qrcode module is now exported as a standalone component. If you’re upgrading from a version before Angular 19, please replace the import statement with the component’s name since it’s now a standalone component. ``` # OLD - angular 18 and older # File: app.module.ts import { QRCodeModule } from 'angularx-qrcode'; # NEW - angular 19 and newer // File: app.component.ts import { QRCodeComponent } from 'angularx-qrcode'; ``` For more uses with angular 18 and earlier see: [angularx/qrcode as ngModule](https://github.com/Cordobo/angularx-qrcode/tree/18.0.0) ### Import the component and add it to your imports section in your main AppComponent: ``` // For angular 19, see above for angular 18 and older // File: app.component.ts // other imports... import { QRCodeComponent } from 'angularx-qrcode'; @Component({ selector: "app-root", imports: [ // other component imports... QRCodeComponent, ], templateUrl: "./app.component.html", styleUrls: ["./app.component.css"], }) export class AppComponent { // your code } ``` ``` // File: app.component.html // all your HTML... <qrcode [qrdata]="'Your data string'" [width]="256" [errorCorrectionLevel]="'M'"></qrcode> ``` ### Generate a QR Code from a string Now that angular/Ionic know about the new QR Code component, let's invoke it from our template. If we use a simple text-string, we need no additional code in our controller. ``` <qrcode [qrdata]="'Your data string'" [width]="256" [errorCorrectionLevel]="'M'"></qrcode> ``` ### Create a QR Code from a variable in your controller In addition to our `<qrcode>`-directive in `app.component.html`, lets add two lines of code to our controller `app.component.ts`. ``` // File: app.component.ts export class QRCodeComponent { public myAngularxQrCode: string = null; constructor () { // assign a value this.myAngularxQrCode = 'Your QR code data string'; } } // File: app.component.html <qrcode [qrdata]="myAngularxQrCode" [width]="256" [errorCorrectionLevel]="'M'"></qrcode> ``` ### Download a QR Code The [online demo](https://cordobo.github.io/angularx-qrcode/) contains a [`working sample`](projects/demo-app) how to download the QR Code with a button. ### Getting the QR Code URL To download the QR Code, we have to use the `qrCodeURL` attribute of the `<qrcode>` which returns a sanitized URL representing the location of the QR Code. ``` // File: example.ts export class QRCodeComponent { public myAngularxQrCode: string = ""; public qrCodeDownloadLink: SafeUrl = ""; constructor () { this.myAngularxQrCode = 'Your QR code data string'; } onChangeURL(url: SafeUrl) { this.qrCodeDownloadLink = url; } } // File: example.html <qrcode (qrCodeURL)="onChangeURL($event)" [qrdata]="myAngularxQrCode" [width]="256" [errorCorrectionLevel]="'M'"></qrcode> <a [href]="qrCodeDownloadLink" download="qrcode">Download</a> ``` The file format obtained by `qrCodeURL` depends directly on the elementType of `<qrcode>`. If it's either canvas, url or image, it returns an image as `.png`, if it's svg, returns a `.svg` file. ## Available Parameters | Attribute | Type | Default | Description | | -------------------- | ----------------------- | ----------- | -------------------------------------------------------------- | | allowEmptyString | Boolean | false | Allow qrdata to be an empty string | | alt | String | null | HTML alt attribute (supported by img, url) | | ariaLabel | String | null | HTML aria-label attribute (supported by canvas, img, url) | | colorDark | String | '#000000ff' | RGBA color, color of dark module (foreground) | | colorLight | String | '#ffffffff' | RGBA color, color of light module (background) | | cssClass | String | 'qrcode' | CSS Class | | elementType | String | 'canvas' | 'canvas', 'svg', 'img', 'url' (alias for 'img') | | errorCorrectionLevel | String | 'M' | QR Correction level ('L', 'M', 'Q', 'H') | | imageSrc | String | null | Link to your image | | imageHeight | Number | null | height of your image | | imageWidth | Number | null | width of your image | | margin | Number | 4 | Define how much wide the quiet zone should be. | | qrCodeURL | EventEmitter\<SafeUrl\> | | Returns the QR Code URL | | qrdata | String | '' | String to encode | | scale | Number | 4 | Scale factor. A value of 1 means 1px per modules (black dots). | | title | String | null | HTML title attribute (supported by canvas, img, url) | | version | Number | (auto) | 1-40 | | width | Number | 10 | Height/Width (any value) | ## QR Code capacity Depending on the amount of data of the **qrdata** to encode, a minimum **width** is required. ## AOT - Ahead Of Time Compilation `angularx-qrcode` supports AOT Compilation (Ahead-of-Time Compilation) which results in significant faster rendering. An AOT-enabled module is included. Further reading: https://angular.io/guide/aot-compiler ## SSR - Server Side Rendering As of version 1.6.0, SSR support is fully implemented, the following workaround is no longer needed. [HowTo use Angular QRCode with SSR](https://github.com/Cordobo/angularx-qrcode/issues/5) ## Contribute - Please open your PR against the development branch. - Make sure your editor uses **prettier** to minimize commited code changes. - You cannot contribute but want to support development? Consider a [sponsorship](https://github.com/sponsors/Cordobo). ## Sponsoring Support the development of angularx-qrcode (or even see your logo here?), consider [sponsoring angularx-qrcode](https://github.com/sponsors/Cordobo). Your support is much appreciated! ## License MIT License Copyright (c) 2018 - present [Andreas Jacob (Cordobo.com)](http://cordobo.com/)