Скопируйте строку в буфер обмена в Angular 2

У меня есть метод в 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       
}

Я уже упоминал эту ссылку, и это не обязательно.

roger_that 02.05.2018 10:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
2 105
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

По соображениям безопасности вы не можете получить прямой доступ к буферу обмена. Вы можете создать скрытый элемент ввода, установить там текст и активировать из него функцию копирования.

Ответ принят как подходящий

Вот фрагмент, который я использовал в одном из моих предыдущих проектов, который позволяет копировать вещи в буфер обмена.

Также упоминается ниже 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. Не знаю, как здесь использовать $.

roger_that 02.05.2018 10:38

Прочтите ссылки, Роджер, код будет работать, $ - это просто соглашение об именах.

Alex 02.05.2018 10:43

Также $ часто используется в Angular. Это переменная области видимости, но она также работает в другом контексте.

Alex 02.05.2018 11:05

Спасибо, Алекс, но я говорю об этом заявлении $("<input>"), где возникает ошибка.

roger_that 02.05.2018 11:08

Я думаю, это скорее контекст JQuery.

roger_that 02.05.2018 11:09

Решено. Мне пришлось использовать инструкцию import * as $ from 'jquery';, чтобы избежать ошибки.

roger_that 02.05.2018 11:10

Другие вопросы по теме