আমি জানি যে এটি ইতিমধ্যে এখানে ইতিমধ্যে সর্বোচ্চ ভোট দেওয়া হয়েছে, তবে আমি বরং একটি কাস্টম নির্দেশিক পদ্ধতির জন্য যাব এবং @ জোকিসাইজারবিয়ের পরামর্শ অনুসারে ক্লিপবোর্ড এভেন্টের উপর নির্ভর করব, শ্রোতা সঠিকভাবে সরানো হয়েছে কিনা তা নিশ্চিত করে (একই ফাংশনটি সরবরাহ করা প্রয়োজন) ইভেন্ট শ্রোতার যোগ এবং অপসারণ উভয়ের জন্য)
স্ট্যাকব্লিটজ ডেমো
import { Directive, Input, Output, EventEmitter, HostListener } from "@angular/core";
@Directive({ selector: '[copy-clipboard]' })
export class CopyClipboardDirective {
@Input("copy-clipboard")
public payload: string;
@Output("copied")
public copied: EventEmitter<string> = new EventEmitter<string>();
@HostListener("click", ["$event"])
public onClick(event: MouseEvent): void {
event.preventDefault();
if (!this.payload)
return;
let listener = (e: ClipboardEvent) => {
let clipboard = e.clipboardData || window["clipboardData"];
clipboard.setData("text", this.payload.toString());
e.preventDefault();
this.copied.emit(this.payload);
};
document.addEventListener("copy", listener, false)
document.execCommand("copy");
document.removeEventListener("copy", listener, false);
}
}
এবং তারপরে এটি ব্যবহার করুন
<a role="button" [copy-clipboard]="'some stuff'" (copied)="notify($event)">
<i class="fa fa-clipboard"></i>
Copy
</a>
public notify(payload: string) {
// Might want to notify the user that something has been pushed to the clipboard
console.info(`'${payload}' has been copied to clipboard`);
}
দ্রষ্টব্য: window["clipboardData"]
এটি বুঝতে পারে না কারণ IE এর জন্য প্রয়োজনীয়টি লক্ষ্য করুনe.clipboardData