在angular中复制curl命令

pb3skfrl  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(413)

我使用从api获得的响应创建了一个curl命令。但现在我想添加复制curl命令的功能,但我无法实现它。我不能使用传统的使用“document.getelementbyid(id).value”的方法,因为在这里,我还将获得html标记,我已经使用这些标记来形成该命令。我提供了一个例子,以便它变得更加清晰

<div class="attacks-detail-tab-value" id="request-curl" data-value="1">
    <strong style="color: #0e1446;">curl&nbsp; &nbsp;--location&nbsp; &nbsp;--request</strong>
    &nbsp; &nbsp;{{self.response.data1}}&nbsp; &nbsp; 
    <span style="color: black; word-break: break-word;"> '{{self.response.data1.url }}'</span> \ 
    <strong style="color: #0e1446;"></strong>
    <ul style="padding: 0; list-style-type: none;">
      <li ng-repeat="(key, value) in self.response.head" style="margin-bottom: 5px;">
      <strong style="color: #0e1446;">--header</strong> 
      <span style="color: black;">' {{ key }}: {{ value }} '
      </span>&nbsp; &nbsp;\</li> 
            <span >
      <strong style="color: #0e1446;">--data </strong> "{
      <ul style="padding: 0; list-style-type: none;">
                <li  ng-repeat="(key, value) in self.response.param"
                style="margin-bottom: 5px;"> {{key }}: {{ value }} 
        </li>}" 
       </ul>
       </span>
      </div>

您可以看到我是如何创建curl命令的。curl命令正在创建中,但是现在我想把curl复制到剪贴板上,我不知道怎么做。有人能提出一些解决办法吗?

deyfvvtc

deyfvvtc1#

复制到剪贴板需要一个字符串。我已经设置了一个.ts来演示如何将curl的各个部分组装到一个对象中,然后将字符串表示形式准备好进行复制。构建该对象的原因是允许您使用该对象构建问题中的html。我试图将html复制并粘贴到angular项目中,但出现了错误,所以我的示例中没有。然而,您可以很容易地看到如何组装它。复制发生在.html中的一个按钮上
stackblitz链接:
html:https://stackblitz.com/edit/angular-ivy-fesbmr?file=src/app/app.component.ts

<button (click)="copyMessage(curlString)" value="click to copy" >Copy this</button>

.ts页

import { Component, VERSION, OnInit } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
 key:string = 'theKey';
 value:string = 'theValue';
 response:any = {data1: {text:'theResponseData', value:'theResponseValue'}};
 curl:any = {
    curl: 'curl',
    locationFlag: '--location',
    requestFlag: '--request',
    responseData: this.response.data1.text,
    responseDataUrl: this.response.data1.url,
    headerFlag:'--header',
    headerData:`'${this.key}: ${this.value}'`,
    dataFlag: '---data',
    dataData: `{${this.key}: ${this.value}}`
  };
 curlString:string = Object.values(this.curl).join(" ");

copyMessage(val: string){
  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);
}

ngOnInit() {
  console.log(this.curlString);
}
}

相关问题