类型 'string | null' 不可分配给 iFrame 的类型'string'错误



我正试图打印一个带有angular的pdf文件,但在'iframe.src'行出现错误-这是错误:Type 'string | null' is not assignable to type 'string'.

this.myService.printPages(shareFilter)
.subscribe((result: any) => {
const pdf = new Blob([result], { type: 'application/pdf' });
const blobUrl = URL.createObjectURL(pdf);
const iframe = document.createElement('iframe');
iframe.style.display = 'none';
iframe.src = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, this.sanitizer.bypassSecurityTrustResourceUrl(blobUrl));
document.body.appendChild(iframe);
iframe.contentWindow.print();
}
)

(假设this.sanitizerDomSantitizer的实例(this.sanitizer.sanitize()具有返回类型string | null,即可以返回stringnull。而CCD_ 8期望分配一个CCD_。

tsconfig.json中启用strictNullChecks时,这将导致您遇到的错误,因为您试图将可能是null的(返回(值分配给必须是string的属性。

要解决此错误,您必须确保分配给iframe.src的值不是null,例如,在之前检查它并在它是null的情况下分配默认值。

这种检查的一个很好的简写是零合并运算符(??(:

const url = this.sanitizer.sanitize(SecurityContext.RESOURCE_URL, this.sanitizer.bypassSecurityTrustResourceUrl(blobUrl));
iframe.src = url ?? '';

为了可读性,this.sanitizer.sanitize()的返回值首先被分配给url,其可以是stringnull。如果是string/而不是null,则表达式url ?? ''将计算为url;如果null,则表达式将计算为空字符串(''(。

相关内容

最新更新