And*_*uze 22 clipboard.js angular
有没有办法在Angular2 Typescript框架中复制剪贴板(多浏览器)中的文本?
我只找到使用Javascript的来源,例如
document.execCommand('copy')
Run Code Online (Sandbox Code Playgroud)
Thi*_*ier 37
您可以在clipboard.js库中实现Angular2指令.
首先将库配置为SystemJS:
<script>
System.config({
map: {
clipboard: 'https://cdn.rawgit.com/zenorocha/clipboard.js/master/dist/clipboard.js'
},
packages: {
'app': {
defaultExtension: 'js'
}
}
});
(...)
</script>
Run Code Online (Sandbox Code Playgroud)
我们希望能够通过指令在元素上附加剪贴板,并提供我们想要链接的DOM元素作为参数.指定目标元素中指定的值将用于复制其文本.以下是使用示例:
<div>
<input #foo/>
<button [clipboard]="foo">Copy</button>
</div>
Run Code Online (Sandbox Code Playgroud)
该指令的实施如下:
import {Directive,ElementRef,Input,Output,EventEmitter} from 'angular2/core';
import Clipboard from 'clipboard';
@Directive({
selector: '[clipboard]'
})
export class ClipboardDirective {
clipboard: Clipboard;
@Input('clipboard')
elt:ElementRef;
@Output()
clipboardSuccess:EventEmitter<any> = new EventEmitter();
@Output()
clipboardError:EventEmitter<any> = new EventEmitter();
constructor(private eltRef:ElementRef) {
}
ngOnInit() {
this.clipboard = new Clipboard(this.eltRef.nativeElement, {
target: () => {
return this.elt;
}
});
this.clipboard.on('success', (e) => {
this.clipboardSuccess.emit();
});
this.clipboard.on('error', (e) => {
this.clipboardError.emit();
});
}
ngOnDestroy() {
if (this.clipboard) {
this.clipboard.destroy();
}
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅此plunkr获取示例:https://plnkr.co/edit/elyMcP5PX3UP4RkRQUG8?p = preview .
dim*_*n d 22
我从https://github.com/pehu71/copy-component/blob/master/src/simple/copy.component.ts获得了一个方法 甚至可以在android 4.1.2上运行
copy(val) {
let selBox = document.createElement('textarea');
selBox.style.position = 'fixed';
selBox.style.left = '0';
selBox.style.top = '0';
selBox.style.opacity = '0';
selBox.value = val;
document.body.appendChild(selBox);
selBox.focus();
selBox.select();
document.execCommand('copy');
document.body.removeChild(selBox);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29445 次 |
| 最近记录: |