我试图实现一个图标,当点击将保存一个变量到用户的剪贴板。我目前已经尝试了几个库,没有一个能够做到这一点。
在Angular 5中,如何正确地将一个变量复制到用户的剪贴板中?
我试图实现一个图标,当点击将保存一个变量到用户的剪贴板。我目前已经尝试了几个库,没有一个能够做到这一点。
在Angular 5中,如何正确地将一个变量复制到用户的剪贴板中?
当前回答
copyCurl(val: string){
navigator.clipboard.writeText(val).then( () => {
this.toastr.success('Text copied to clipboard');
}).catch( () => {
this.toastr.error('Failed to copy to clipboard');
});
}
其他回答
修改版本的jockeisorby的回答,修复事件处理程序没有被正确删除。
copyToClipboard(item): void {
let listener = (e: ClipboardEvent) => {
e.clipboardData.setData('text/plain', (item));
e.preventDefault();
};
document.addEventListener('copy', listener);
document.execCommand('copy');
document.removeEventListener('copy', listener);
}
你可以使用Angular模块来实现:
navigator.clipboard.writeText('your text').then().catch(e => console.error(e));
从Angular Material v9开始,它现在有了一个剪贴板CDK
剪贴板|角材料
它可以简单地使用
<button [cdkCopyToClipboard]="This goes to Clipboard">Copy this</button>
我认为在复制文本时,这是一个更干净的解决方案:
copyToClipboard(item) {
document.addEventListener('copy', (e: ClipboardEvent) => {
e.clipboardData.setData('text/plain', (item));
e.preventDefault();
document.removeEventListener('copy', null);
});
document.execCommand('copy');
}
然后在html中的click事件上调用copyToClipboard。(点击)= " copyToClipboard (texttocopy)”。
以下方法可用于复制消息:-
export function copyTextAreaToClipBoard(message: string) {
const cleanText = message.replace(/<\/?[^>]+(>|$)/g, '');
const x = document.createElement('TEXTAREA') as HTMLTextAreaElement;
x.value = cleanText;
document.body.appendChild(x);
x.select();
document.execCommand('copy');
document.body.removeChild(x);
}