html - Angular 8 - 将 JSON 对象复制到剪贴板
问题描述
我有一个从后端得到的 JSON 响应,我显示为{{ response | json }}
. 有一个复制到剪贴板选项,我需要在其中复制response
. 我有以下代码
copy(response){
let val = response;
const 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);}
这复制为 [object object] 因为response
是一个对象。我可以将其复制为将响应转换为字符串let val = JSON.stringyfy(response)
。但这不会以我显示它的格式化方式复制它,而是像字符串一样将 json 复制到一行中。那么如何以正确的格式将 JSON 对象复制到剪贴板呢?
解决方案
angular cdk 中有一个内置Clipboard
类,这使得这更容易做到。您还应该将空间参数与您的JSON.stringify
@angular/cdk
如果您还没有安装包,请先npm install 。
在您的@NgModule
导入中ClipboardModule
import { ClipboardModule } from '@angular/cdk/clipboard';
@NgModule({
imports: [
ClipboardModule
],
})
在组件的打字稿文件中导入Clipboard
类
import { Clipboard } from '@angular/cdk/clipboard';
@Component({ /* ... */ })
export class MyComponent {
constructor(private clipboard: Clipboard) { }
public copy() {
// replace this object with your data
const object = {abc:'abc',xy:{x:'1',y:'2'}}
// Note the parameters
this.clipboard.copy(JSON.stringify(object, null, 2));
}
}
在组件的模板中
<button (click)="copy()">
Copy Data
</button>
{abc:'abc',xy:{x:'1',y:'2'}}
粘贴时字符串化的结果:
{
"abc": "abc",
"xy": {
"x": "1",
"y": "2"
}
}
推荐阅读
- elasticsearch - 将节点添加到运行集群 elasticsearch 导致 master not found 异常
- python - sqlite3.OperationalError:靠近“”:语法错误
- android-studio - 为不同的屏幕密度制作不同的布局
- javascript - 如何清空 puppeteer 中 textarea 的值?
- python-3.x - 无法在 Matplotlib 中显示某些列数据
- firebase - Firebase Firestore 是否有阻止恶意请求的措施?
- c++ - OpenCV 教程问题
- javascript - Bootstrap > Carousel > 需要匹配图像的指标数量
- excel - VBA 用于在 Excel 中将文件从一个 Sharepoint 文件夹移动到另一个文件夹
- php - 在未知行中回显具有特定 ID 的特定值(foreach 循环)