У меня есть метод в Angular2
, который генерирует ссылку для совместного использования, что-то вроде requestPath
. При нажатии кнопки мне нужно скопировать этот requestPath
в буфер обмена. Как этого добиться?
Я столкнулся с несколькими решениями скопировать в буфер обмена здесь, но ничего не отвечает моим потребностям. У меня нет textArea
или какого-либо элемента input
для копирования. Просто скопируйте простую строковую переменную onClick
У меня есть html:
<td class = "submitBtnCell">
<button class = "btn" (click) = "createSharableLink()">Share</button>
</td>
и метод:
createSharableLink(){
let requestPath = this.prepareRequestPathForVideos("shared");
alert(requestPath); // need to copy this request path to clipboard
}
По соображениям безопасности вы не можете получить прямой доступ к буферу обмена. Вы можете создать скрытый элемент ввода, установить там текст и активировать из него функцию копирования.
Вот фрагмент, который я использовал в одном из моих предыдущих проектов, который позволяет копировать вещи в буфер обмена.
Также упоминается ниже Carsten.
// Copy Element Into Clipboard [ Can use "$(val).text()" as Argument ]
function copyToClipboard(element) {
var $temp = $("<input>");
$("body").append($temp);
$temp.val(element).select();
document.execCommand("copy");
$temp.remove();
}
Он добавляет скрытый <input>
в тело страницы, добавляет к нему ваш элемент, выделяет текст и использует execCommand
для копирования выделенного текста.
Используя ваш код, вот пример:
<td class = "submitBtnCell">
<button class = "btn" (click) = "createSharableLink()">Share</button>
</td>
createSharableLink(){
let requestPath = this.prepareRequestPathForVideos("shared");
//alert(requestPath); // need to copy this request path to clipboard
copyToClipboard(requestPath);
}
Справка: https://angular.io/guide/rx-library#naming-conventions-for-observables
Ссылка на StackOverflow:Руководство по стилю angular2 - свойство со знаком доллара?
Because Angular applications are mostly written in TypeScript, you will typically know when a variable is an observable. Although the Angular framework does not enforce a naming convention for observables, you will often see observables named with a trailing “$” sign.
This can be useful when scanning through code and looking for observable values. Also, if you want a property to store the most recent value from an observable, it can be convenient to simply use the same name with or without the “$”.
Я новичок в Angular. Не знаю, как здесь использовать $
.
Прочтите ссылки, Роджер, код будет работать, $
- это просто соглашение об именах.
Также $
часто используется в Angular. Это переменная области видимости, но она также работает в другом контексте.
Спасибо, Алекс, но я говорю об этом заявлении $("<input>")
, где возникает ошибка.
Я думаю, это скорее контекст JQuery.
Решено. Мне пришлось использовать инструкцию import * as $ from 'jquery';
, чтобы избежать ошибки.
Я уже упоминал эту ссылку, и это не обязательно.