What is ngx-clipboard?
ngx-clipboard is an Angular library that provides a simple way to copy text to the clipboard. It is designed to be easy to use and integrate into Angular applications, offering both directive and service-based approaches for copying text.
What are ngx-clipboard's main functionalities?
Directive-based Copy
This feature allows you to use a directive to copy text to the clipboard. By adding the `ngxClipboard` directive to a button and binding the `cbContent` property to the text you want to copy, you can easily enable copy functionality.
<button ngxClipboard [cbContent]="'Text to copy'">Copy Text</button>
Service-based Copy
This feature allows you to use a service to copy text to the clipboard. By injecting the `ClipboardService` into your component, you can call the `copy` method with the text you want to copy.
import { ClipboardService } from 'ngx-clipboard';
constructor(private clipboardService: ClipboardService) {}
copyText() {
this.clipboardService.copy('Text to copy');
}
Copy from Input Element
This feature allows you to copy text from an input element. By referencing the input element and using the `copyFromInputElement` method of the `ClipboardService`, you can copy the text contained in the input element.
<input #inputText type="text" value="Text to copy">
<button (click)="clipboardService.copyFromInputElement(inputText)">Copy Text</button>
Other packages similar to ngx-clipboard
clipboard
The `clipboard` package is a modern copy-to-clipboard library that works in both modern and legacy browsers. It provides a simple API for copying text to the clipboard and is not tied to any specific framework, making it versatile for use in various JavaScript projects. Compared to ngx-clipboard, it is more lightweight and framework-agnostic.
copy-to-clipboard
The `copy-to-clipboard` package is a small and simple library for copying text to the clipboard. It is framework-agnostic and can be used in any JavaScript project. It offers a straightforward API and is very lightweight. Compared to ngx-clipboard, it does not provide Angular-specific features but is easier to integrate into non-Angular projects.
angular-clipboard
The `angular-clipboard` package is another Angular library for copying text to the clipboard. It provides similar functionality to ngx-clipboard but with a different API. It is designed specifically for Angular applications and offers both directive and service-based approaches. Compared to ngx-clipboard, it provides an alternative API for achieving the same functionality.
From 6.0.0, there is no other JS dependency anymore. Just Angular.
It works with angular version 2.0.0 and up
To make more sense with the future versioning scheme of Angular, the directive selector is now rename to ngxClipboard
Dependencies
If you need to use it on 2.x, please use version 7.x.x.
If you need to use it on 4.x, please use version 8.x.x.
If you need to use it on 5.x, please use version 10.x.x.
The code are pretty much the same, in 8.0.0 it uses InjectionToken which requires angular4 and above.
Install
You can get it on npm.
npm install ngx-clipboard --save
Open your module file e.g app.module.ts
and update imports array
import { ClipboardModule } from 'ngx-clipboard';
...
imports: [
...
ClipboardModule,
...
]
Usage
If you use SystemJS to load your files, you might have to update your config:
System.config({
map: {
'ngx-clipboard': 'node_modules/ngx-clipboard'
}
});
Copy source
This library support multiple kinds of copy source.
- Setting
cbContent
attribute
<button ngxClipboard [cbContent]="'target string'">Copy</button>
....
<input type="text" #inputTarget>
<button [ngxClipboard]="inputTarget">Copy</button>
- Using
copyFromContent
from ClipboardService
to copy any text you dynamically created.
import { ClipboardService } from 'ngx-clipboard'
...
constructor(private _clipboardService: ClipboardService){
...
}
copy(text: string){
this._clipboardService.copyFromContent(text)
}
Callbacks
cbOnSuccess
callback attribute is triggered after copy was successful with $event: {isSuccess: true, content: string}
<button (cbOnSuccess) = "copied($event)" [cbContent]="'example string'">Copied</button>
Or updating parameters directly like so
<button (cbOnSuccess) = "isCopied = true" [cbContent]="'example string'">Copied</button>
cbOnError
callback attribute is triggered when there's failure in copying with $event:{isSuccess: false}
Example
stackblitz.com
Build project
1. npm i
2. npm run build
To run demo code locally
npm run start
Contributing
- Your commits conform to the conventions established here
Troubleshooting
Kudos to
Thierry Templier This project is inspired by his answer on StackOverflow.
The core function is ported from clipboard.js by @zenorocha.
This project was generated with Angular CLI version 6.0.1.
Shoutouts 🙏
Big thanks to BrowserStack for letting the maintainers use their service to debug browser issues.