2017-02-21 32 views

回答

0

可以使用DomSanitizer预期

constructor(private sanitizer: DomSanitizer){} 

    generateDownloadJsonUri() { 
     var theJSON = JSON.stringify(this.resJsonResponse); 
     var uri = this.sanitizer.bypassSecurityTrustUrl("data:text/json;charset=UTF-8," + encodeURIComponent(theJSON)); 
     this.downloadJsonHref = uri; 
    } 

:需要 https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html

import语句:

import {enter code here DomSanitizer, SafeResourceUrl, SafeUrl} from '@angular/platform-browser'; 
constructor(private sanitizer: DomSanitizer){} 

generateDownloadJsonUri() { 
    var theJSON = JSON.stringify(this.resJsonResponse); 
    var uri = this.sanitizer.bypassSecurityTrustUrl("data:text/json;charset=UTF-8," + encodeURIComponent(theJSON)); 
    this.downloadJsonHref = uri; 
} 
+0

请编辑您的答案以包含一些解释。仅有代码的答案对未来SO读者的教育很少。您的回答是在低质量的审核队列中。 – mickmackusa

1

当我的json非常大时,我遇到了一些问题,我在Ankur Akvaliya答案中添加了一个Blob对象,并且它可行!

generateDownloadJsonUri() { 
    let theJSON = JSON.stringify(this.resJsonResponse); 
    let blob = new Blob([theJSON], { type: 'text/json' }); 
    let url= window.URL.createObjectURL(blob); 
    let uri:SafeUrl = this.sanitizer.bypassSecurityTrustUrl(url); 
    this.downloadJsonHref = uri; 
}