Estou tentando implementar um ícone que, ao ser clicado, salvará uma variável na área de transferência do usuário. Atualmente, experimentei várias bibliotecas e nenhuma delas foi capaz de fazer isso.
Como copio corretamente uma variável para a área de transferência do usuário no Angular 5?
angular
typescript
angular5
dev anônimo
fonte
fonte
Respostas:
Solução 1: copie qualquer texto
HTML
arquivo .ts
Solução 2: Copiar de um TextBox
HTML
arquivo .ts
Demonstração aqui
Solução 3: importar uma diretiva de terceiros ngx-clipboard
Solução 4: Diretiva Personalizada
Se você preferir usar uma diretiva personalizada, verifique a resposta de Dan Dohotaru, que é uma solução elegante implementada usando
ClipboardEvent
.fonte
Cannot read property 'select' of undefined
angular 6. Este angular6 é compatível?<input *ngIf="invitation_code" type="text" readonly value="{{invitation_code}}" #userinput > <button *ngIf="code_success" (click)="copyInputMessage(userinput)" value="click to copy" > Copy code </button>
Obrigadoposition
,left
,top
, eopacity
. e substitua-o por umselBox.style.height = '0';
Eu sei que isso já foi bem votado aqui agora, mas prefiro ir para uma abordagem de diretiva personalizada e confiar no ClipboardEvent como @jockeisorby sugeriu, ao mesmo tempo que me certifico de que o ouvinte foi removido corretamente (a mesma função precisa ser fornecida para adicionar e remover ouvintes de eventos)
demonstração stackblitz
e então usá-lo como tal
Nota: observe que o
window["clipboardData"]
é necessário para o IE, pois ele não compreendee.clipboardData
fonte
Acho que esta é uma solução muito mais limpa ao copiar texto:
E então basta chamar copyToClipboard no evento click em html. (clique) = "copyToClipboard ('texttocopy')"
fonte
A partir do Angular Material v9, agora tem um CDK para prancheta
Área de transferência | Material Angular
Pode ser usado simplesmente
fonte
Versão modificada da resposta de jockeisorby que corrige o manipulador de eventos não sendo removido corretamente.
fonte
document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler
Você pode conseguir isso usando módulos angulares:
fonte
O método abaixo pode ser usado para copiar a mensagem: -
fonte
A melhor maneira de fazer isso no Angular e manter o código simples é usar este projeto.
https://www.npmjs.com/package/ngx-clipboard
fonte
Copie usando CDK angular,
Module.ts
Copie programaticamente uma string: MyComponent.ts,
Clique em um elemento para copiar via HTML:
Referência: https://material.angular.io/cdk/clipboard/overview
fonte
A primeira solução sugerida funciona, só precisamos mudar
Para
ou seja,
HTML:
arquivo .ts:
fonte