簡體   English   中英

進行 DomSanitizer API 調用時不使用基本屬性?

[英]Not using the base attribute when making DomSanitizer API calls?

我正在使用 DomSanitizer 撥打電話,如下所示:

        this.domSanitizer.bypassSecurityTrustResourceUrl(url));

url是正在獲取的 SVG 圖像的完整 URL。

這是一個例子:

      this.matIconRegistry.addSvgIcon(
        "fs",
        this.domSanitizer.bypassSecurityTrustResourceUrl('https://github.com/fireflysemantics/images/blob/master/fsalpha/logo/fsalpha-logo-optimized.svg'));

但是,由於baseindex.html設置為另一個 URL,因此 dom sanitizer URL 以它為前綴。

有沒有辦法關閉這個?

這是我寫的一篇文章,展示了在不添加base屬性的情況下它是如何工作的:

https://medium.com/@ole.ersoy/angular-material-icon-from-github-hosted-svg-logo-d5c35b923d

這是一個stackblitz,顯示添加base屬性時,對絕對URL的調用以base屬性為前綴,因此傳遞的URL被破壞:

https://stackblitz.com/edit/angular-material-custom-icon-with-base?file=src/index.html

功能要求

Angular 有一個功能請求 WRT 來解決這個問題:

https://github.com/angular/angular/issues/23139

角度問題

https://github.com/angular/angular/issues/34645

錯誤截圖

這是堆棧跟蹤的屏幕截圖,顯示基本 URL 位於圖像 URL 之前:

在此處輸入圖片說明

這看起來像一個錯誤。 HttpClient 沒有可能的理由重寫具有協議的 URL。

Material icon 注冊表不會改變任何圖標的 URL。 它對 URL 並沒有做任何特別的事情,只是推遲加載到 HttpClient。

https://github.com/angular/components/blob/09dc4594259cf1d6b34a5a0893c0bccaa132c319/src/material/icon/icon-registry.ts#L595

我無法重現這一點,因為它需要將應用程序部署到 gh pages 之類的域,但是如果您看到這種情況發生,請在 Angular GitHub 項目上打開一個問題並讓他們知道。

我能給你的唯一答案是編寫一個自定義攔截器來修復 URL。

這是一個解釋如何使用攔截器使用基本 URL 的博客。 這不是如何解決您的問題的指南,但它是我能找到的最接近的東西。

http://www.projectcodify.com/angular-set-base-url-dynamically

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM