Pei*_*ein 6 html2canvas 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');
});
}
}Run Code Online (Sandbox Code Playgroud)
<a data-html2canvas-ignore (click)="pdfDownload()">screenshot</a>Run Code Online (Sandbox Code Playgroud)
我打电话要做的服务
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;
}
});
} Run Code Online (Sandbox Code Playgroud)
我无法访问html2canvas中的AddImagesResource()函数

你能告诉我如何实现上述功能吗?
在Angular中为promise提供回调时,您应该使用箭头函数,而不是匿名函数.箭头函数正确绑定到当前上下文,因此您可以访问您尝试调用的函数.
试试这个:
pdfDownload() {
html2canvas(document.body).then(canvas => {
var imgData = canvas.toDataURL("image/png");
this.AddImagesResource(imgData);
document.body.appendChild(canvas);
});
}
Run Code Online (Sandbox Code Playgroud)
确保导入 angular-cli.json 中脚本列表下的脚本
"scripts": [
"../node_modules/html2canvas/dist/html2canvas.min.js"
]
Run Code Online (Sandbox Code Playgroud)
并在课堂上作为:
import * as html2canvas from "html2canvas"
Run Code Online (Sandbox Code Playgroud)
pdfDownload() {
let self = this;//use this variable to access your class members inside then().
html2canvas(document.body).then(canvas => {
var imgData = canvas.toDataURL("image/png");
self.AddImagesResource(imgData);
document.body.appendChild(canvas);
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16722 次 |
| 最近记录: |