角度 4 中的 html2canvas

2024-01-10

我可以在 Angular 4 中使用 html2canvas 截取屏幕截图,但我需要使用 http post 调用将字符串图像发送到服务器端

成分

import { Component, OnInit, NgZone } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { EventsEmitter } from '../../assets/scripts/services/eventsEmitter';
import { WindowRef } from '../../assets/scripts/services/window';
import { ImagesService } from '../images/images.component.service';
import { DomSanitizer } from '@angular/platform-browser';
import * as html2canvas from "html2canvas";


@Component({
    selector: 'categories',
    templateUrl: 'app/components/view/view.component.html',
    styleUrls: ['app/components/view/view.component.css'],
    providers: [ImagesService]
})
export class ViewComponent {
    
   

    constructor(
        private route: ActivatedRoute,
        private router: Router,
        private imagesService: ImagesService,
        private eventsEmitter: EventsEmitter
        private sanitizer: DomSanitizer,
        private window: WindowRef) {
        this.window.nativeWindow.scrollTo(0, 0);
    }

    ngOnInit() {
    }

    pdfDownload() {
        html2canvas(document.body).then(function (canvas) {
            var imgData = canvas.toDataURL("image/png");
            document.body.appendChild(canvas);
        });
    }


    AddImagesResource(query: any) {
        this.imagesService.addCanvasResource(query)
            .subscribe(response => {
                this.eventsEmitter.broadcast('Success', 'Changes Saved Succesfully');
            },
            error => {
                this.eventsEmitter.broadcast('Error', 'Error Occured');
            });
    }
}
<a data-html2canvas-ignore (click)="pdfDownload()">screenshot</a>

我打电话来发帖的服务

 addCanvasResource(body: Object): Observable<any> {
        let bodyString = JSON.stringify(body);
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });

        return this.http.post(this.baseUrl + 'api/v3/images/AddCanvasImage', body, options)
            .map((response: Response) => {
                if (response.status < 200 || response.status >= 300) {
                    throw new Error('This request has failed ' + response.status);
                }
                else {
                    return response;
                }
            });
    }  

I am unable to access AddImagesResource() function in html2canvas enter image description here

你能告诉我如何实现上述功能吗


在 Angular 中为 Promise 提供回调时,您应该使用箭头函数 http://learnangular2.com/es6/arrow-functions,而不是匿名函数。箭头函数正确绑定到当前上下文,因此您尝试调用的函数将是可访问的。

试试这个:

pdfDownload() {
    html2canvas(document.body).then(canvas => {
        var imgData = canvas.toDataURL("image/png");
        this.AddImagesResource(imgData);
        document.body.appendChild(canvas);
    });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

角度 4 中的 html2canvas 的相关文章

随机推荐

  • 根据文本长度自动拉伸或收缩“”?

    我有两个
  • 如何比较没有缓存的 Neo4j 查询的性能?

    我一直在尝试比较 Neo4j 中的查询性能 为了使查询更高效 我添加了索引 使用profile分析结果 并尝试在使用USING INDEX时做同样的事情 在大多数查询中 使用第二个选项 使用 USING INDEX 时数据库命中要好得多 行
  • 在 C# 中使用嵌套数组反序列化 JSON

    我在尝试反序列化此 JSON 时遇到问题 response numfound 1 start 0 docs enID 9999 startDate 2013 09 25 bName XXX pName YYY UName ZZZ agent
  • 指定 --django-settings-module 标志时 pylint (pylint_django) 不起作用

    我正在使用最新版本pylint django前几天发布 Package Version pylint 2 7 4 pylint django 2 4 3 pylint plugin utils 0 6 当我启用时pylint在 VSC 中p
  • 什么是 ' 以及为什么 Google 搜索将其替换为撇号?

    用什么语言表示和 哈希 三 九 分号 39 代表撇号 我以 JSON 格式提取了一些网站数据 其中一些用户评论带有撇号 被替换为 39 那么 它是什么代表呢 我什至无法用谷歌搜索它 因为谷歌搜索撇号而不是和 哈希 三 九 分号 It s H
  • 将 VB6 AES Rijndael 分组密码转换为 C# 作者:Phil Fresle

    我正在将经典 asp 应用程序转换为 C 并且希望能够解密 c 中最初在经典 asp 中加密的字符串 经典的asp代码是here http www frez co uk vb6 aspx c 代码是here http www frez co
  • IMvcBuilder AddJsonOptions 在.Net Core 3.0 中去了哪里?

    我刚刚将我的 ASP Web API 项目从 NET Core 2 0 升级到 3 0 我正在使用 services AddMvc AddJsonOptions opts gt opts SerializerSettings Contrac
  • QFlags枚举类型转换突然失败

    我已经在库中运行了这段代码很长一段时间 MyClass MyClass QDialog setWindowFlags Qt CustomizeWindowHint Qt WindowTitleHint 然后 在更改库的各个部分后 我突然收到
  • 一个 Java 主题程序,可以读取一个巨大的 CSV 文件的行

    我有一个巨大的 CSV 文件 包含超过 700K 行 我必须解析该 CSV 文件的行并执行操作 我想到通过使用线程来做到这一点 我首先尝试做的事情很简单 每个线程都应该处理 CSV 文件的唯一行 我只能读取 3000 行 我创建了三个线程
  • 如何使用 ExtJS 更改光标

    我想设置网格的一列 以将光标悬停后更改为指针 我不知道应用样式是否是最佳实践 请告诉我 我就是想不通 这是我的代码 我希望该列能够在鼠标悬停时改变光标 Ext define Ext grid Panel store services xty
  • Java 并集、交集和差集的集合方法[重复]

    这个问题在这里已经有答案了 我编写了一个包含两个不同数字集合的程序 我想知道如何从这两个集合中获得并集 交集和集合差 我知道 BitSet 有方法 但这些方法在这里不起作用 public class Collections public s
  • Anaconda pip 离线安装包括依赖项(tensorflow)

    我想在没有互联网连接的系统上的 anaconda 环境中安装 tensorflow 并且我没有 root 访问权限 即我只想将其安装到本地用户 我已经下载了tensorflow的 whl文件和所需的依赖项 并将它们复制到我要使用的机器上 进
  • 从 infix 更改为 postfix 有什么好处?

    我今天看书了 它引入了从中缀变为后缀的算法 有什么好处 提前致谢 其一 与计算中缀表达式不同 您可以借助堆栈从左到右一次扫描轻松计算后缀表达式 其次 后缀表达式中不需要括号和优先规则等概念
  • 是否可以在 pandas 中使用自定义过滤器功能?

    我可以使用我的辅助函数来确定投篮是否为三指针作为 Pandas 中的过滤函数吗 我的实际功能要复杂得多 但我针对这个问题简化了它 def isThree x y return x y 3 print data isThree data x
  • 如何在iphone中获取gmsmapview的坐标中心

    我正在使用新的 iOS 版 Google 地图 SDK 我可以从 GMSMapView center 获取真实坐标吗 现在它返回一个 CGPoint 的值 但它不是真正的坐标 感谢和问候 Use the projection method
  • 从 Kotlin 隐藏静态 Java 方法

    我们正在将许多 java 静态方法转换为 kotlin 扩展函数 然而 我们需要保留一些 JUST FOR JAVA 的方法 我们希望强制 kotlin 代码使用扩展函数 有没有办法从 kotlin 中隐藏 java 静态方法 您可以使用注
  • Google Apps脚本:复制电子表格非常慢

    我有一个 Web 应用程序 其中脚本连接到电子表格 在脚本中 我从电子表格中查找文件的 ssid 打开该文件 然后复制并重命名它 相关行如下所示 var copy SpreadsheetApp openById ssid copy newN
  • sonarqube 忽略 sonar.junit.reportPaths

    我有一个 gradle 项目 它应用了 sonarqube gradle 插件 版本 2 6 我在我团队的 sonarqube 服务器版本 6 4 版本 25310 上运行它 根据文档 https docs sonarqube org di
  • å 在 xml 文件中是否有效?

    IE 不喜欢在 XML 文件中显示 字符 这是一个 IE 问题还是 和类似的字符确实是无效的 XML 我是否必须创建 xx 所有这些字母的值 Michel 顺便说一句 字符位于 CDATA 标记内 声明是这样的 嗯 似乎无法将 xml 声明
  • 角度 4 中的 html2canvas

    我可以在 Angular 4 中使用 html2canvas 截取屏幕截图 但我需要使用 http post 调用将字符串图像发送到服务器端 成分 import Component OnInit NgZone from angular co