Estoy tratando de implementar un ícono que, al hacer clic, guardará una variable en el portapapeles del usuario. Actualmente he probado varias bibliotecas y ninguna de ellas ha podido hacerlo.
¿Cómo copio correctamente una variable al portapapeles del usuario en Angular 5?
angular
typescript
angular5
anonymous-dev
fuente
fuente
Respuestas:
Solución 1: copie cualquier texto
HTML
archivo .ts
Solución 2: copiar desde un TextBox
HTML
archivo .ts
Demo aquí
Solución 3: Importe una directiva de terceros ngx-clipboard
Solución 4: Directiva personalizada
Si prefiere usar una directiva personalizada, consulte la respuesta de Dan Dohotaru, que es una elegante solución implementada con
ClipboardEvent
.fuente
Cannot read property 'select' of undefined
en angular 6. ¿Es este angular6 compatible?<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>
Graciasposition
,left
,top
, yopacity
. y reemplazarlo con unselBox.style.height = '0';
Sé que esto ya ha sido muy votado aquí por ahora, pero prefiero optar por un enfoque de directiva personalizado y confiar en ClipboardEvent como sugirió @jockeisorby, mientras que también me aseguro de que el oyente se elimine correctamente (se debe proporcionar la misma función tanto para agregar como para eliminar oyentes de eventos)
demo de stackblitz
y luego úsalo como tal
Nota:
window["clipboardData"]
tenga en cuenta que es necesario para IE, ya que no comprendee.clipboardData
fuente
Creo que esta es una solución mucho más limpia al copiar texto:
Y luego simplemente llame a copyToClipboard al hacer clic en el evento en html. (clic) = "copyToClipboard ('texttocopy')"
fuente
A partir de Angular Material v9, ahora tiene un CDK de portapapeles
Portapapeles | Material angular
Puede usarse tan simplemente como
fuente
Versión modificada de la respuesta de jockeisorby que corrige que el controlador de eventos no se elimina correctamente.
fuente
document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler
Puede lograr esto usando módulos angulares:
fuente
El siguiente método se puede utilizar para copiar el mensaje: -
fuente
La mejor manera de hacer esto en Angular y mantener el código simple es usar este proyecto.
https://www.npmjs.com/package/ngx-clipboard
fuente
Copiar usando angular cdk,
Module.ts
Copie mediante programación una cadena: MyComponent.ts,
Haga clic en un elemento para copiar a través de HTML:
Referencia: https://material.angular.io/cdk/clipboard/overview
fuente
La primera solución sugerida funciona, solo necesitamos cambiar
A
es decir,
HTML:
Archivo .ts:
fuente