Angular 10:我正在尝试从一个跨度中复制字符串数据,而不使用 HTML 中的 @Input 括号
Angular 10: I am trying to copy the string data from a span with out using the @Input brackets in the HTML
我正在尝试从跨度、输入、按钮等中复制元素,而输入周围没有 [],就像这样 <button copyOnClick>testing the data</button>
应该复制 测试数据.当我在 copyOnClick <button [copyOnClick]="index + 1"> {{index + 1}}</button>
周围有括号时它确实有效,它复制 1 但我想在按钮内获取文本因此,如果我将它也添加到跨度或输入中,它可能会更加动态。
这是我的指令
@Directive({
selector: '[copyOnClick]'
})
export class CopyOnClickDirective {
@Input('copyOnClick')
public url: any;
@Output('copied')
public copied: EventEmitter<string> = new EventEmitter<string>();
@HostListener('click', ['$event'])
public onClick(event: MouseEvent): void {
event.preventDefault();
if (!this.url) return;
let listener = (e: ClipboardEvent) => {
let clipboard = e.clipboardData || window['clipboardData'];
clipboard.setData('text', this.url.toString());
e.preventDefault();
this.copied.emit(this.url);
};
document.addEventListener('copy', listener, false);
document.execCommand('copy');
document.removeEventListener('copy', listener, false);
console.log(this.url);
}
}
这是 HTML 代码。
<button class="btn-numbers btn font-weight-medium btn-light" [copyOnClick]="index + 1">{{ index + 1 }}</button>
您要做的是将宿主元素 ref 注入指令构造函数 (private readonly _elementRef: ElementRef
) 并使用它来获取实际内容。
然后您可以使用 this._elementRef.nativeElement
访问内部 html(对于跨度)或值(对于文本输入)。
我正在尝试从跨度、输入、按钮等中复制元素,而输入周围没有 [],就像这样 <button copyOnClick>testing the data</button>
应该复制 测试数据.当我在 copyOnClick <button [copyOnClick]="index + 1"> {{index + 1}}</button>
周围有括号时它确实有效,它复制 1 但我想在按钮内获取文本因此,如果我将它也添加到跨度或输入中,它可能会更加动态。
这是我的指令
@Directive({
selector: '[copyOnClick]'
})
export class CopyOnClickDirective {
@Input('copyOnClick')
public url: any;
@Output('copied')
public copied: EventEmitter<string> = new EventEmitter<string>();
@HostListener('click', ['$event'])
public onClick(event: MouseEvent): void {
event.preventDefault();
if (!this.url) return;
let listener = (e: ClipboardEvent) => {
let clipboard = e.clipboardData || window['clipboardData'];
clipboard.setData('text', this.url.toString());
e.preventDefault();
this.copied.emit(this.url);
};
document.addEventListener('copy', listener, false);
document.execCommand('copy');
document.removeEventListener('copy', listener, false);
console.log(this.url);
}
}
这是 HTML 代码。
<button class="btn-numbers btn font-weight-medium btn-light" [copyOnClick]="index + 1">{{ index + 1 }}</button>
您要做的是将宿主元素 ref 注入指令构造函数 (private readonly _elementRef: ElementRef
) 并使用它来获取实际内容。
然后您可以使用 this._elementRef.nativeElement
访问内部 html(对于跨度)或值(对于文本输入)。