J'essaie d'implémenter une icône qui, lorsqu'elle est cliquée, enregistre une variable dans le presse-papiers de l'utilisateur. J'ai actuellement essayé plusieurs bibliothèques et aucune d'entre elles n'a pu le faire.
Comment copier correctement une variable dans le presse-papiers de l'utilisateur dans Angular 5?
angular
typescript
angular5
anonyme-dev
la source
la source
Réponses:
Solution 1: copiez n'importe quel texte
HTML
fichier .ts
Solution 2: Copier à partir d'une zone de texte
HTML
fichier .ts
Démo ici
Solution 3: importer une directive tierce ngx-clipboard
Solution 4: Directive personnalisée
Si vous préférez utiliser une directive personnalisée, consultez la réponse de Dan Dohotaru qui est une solution élégante implémentée à l'aide de
ClipboardEvent
.la source
Cannot read property 'select' of undefined
dans angular 6. Est-ce 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>
Merciposition
,left
,top
etopacity
. et remplacez-le par unselBox.style.height = '0';
Je sais que cela a déjà été fortement voté ici maintenant, mais je préfère opter pour une approche directive personnalisée et me fier au ClipboardEvent comme @jockeisorby l'a suggéré, tout en m'assurant que l'auditeur est correctement supprimé (la même fonction doit être fournie pour les écouteurs d'événements d'ajout et de suppression)
démo de stackblitz
puis utilisez-le comme tel
Remarque: notez que le
window["clipboardData"]
est nécessaire pour IE car il ne comprend pase.clipboardData
la source
Je pense que c'est une solution beaucoup plus propre lors de la copie de texte:
Et puis appelez simplement copyToClipboard sur l'événement de clic en html. (click) = "copyToClipboard ('texttocopy')"
la source
À partir de Angular Material v9, il dispose désormais d'un presse-papiers CDK
Presse-papiers | Matériau angulaire
Il peut être utilisé aussi simplement que
la source
Version modifiée de la réponse de jockeisorby qui corrige le gestionnaire d'événements n'étant pas correctement supprimé.
la source
document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler
Vous pouvez y parvenir en utilisant des modules angulaires:
la source
La méthode ci-dessous peut être utilisée pour copier le message: -
la source
La meilleure façon de faire cela dans Angular et de garder le code simple est d'utiliser ce projet.
https://www.npmjs.com/package/ngx-clipboard
la source
Copier en utilisant un cdk angulaire,
Module.ts
Copiez par programme une chaîne: MyComponent.ts,
Cliquez sur un élément à copier via HTML:
Référence: https://material.angular.io/cdk/clipboard/overview
la source
La première solution suggérée fonctionne, il suffit de changer
À
c'est à dire,
HTML:
Fichier .ts:
la source