2017-05-20 103 views
1

我能夠採取使用html2canvas在角4的截圖,但我需要使用HTTP POST調用html2canvas在角4

組件

字符串圖像發送到服務器端

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>

服務THA TI打電話做後

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; 
 
       } 
 
      }); 
 
    }

我無法訪問AddImagesResource()函數html2canvas enter image description here

可以請你告訴我如何實現以上功能

回答

3

在爲Angular提供承諾的回調時,應該使用arrow function而不是匿名函數。箭頭函數能夠正確地綁定到當前上下文,所以您正在嘗試調用的函數將可以訪問。

試試這個:

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