Angular 无法在mat图标中加载自定义SVG

Angular 无法在mat图标中加载自定义SVG,angular,typescript,angular-material,Angular,Typescript,Angular Material,我试图在MatIconRegistry中加载一个自定义SVG,组件中包含以下代码 constructor(fb: FormBuilder, private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer) { this.matIconRegistry.addSvgIconInNamespace( 'capp', 'reassign', this

我试图在MatIconRegistry中加载一个自定义SVG,组件中包含以下代码

  constructor(fb: FormBuilder,
    private matIconRegistry: MatIconRegistry,
    private domSanitizer: DomSanitizer) {
    this.matIconRegistry.addSvgIconInNamespace(
      'capp',
      'reassign',
      this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/images/reassign.svg')
    );
    this.form = fb.group({
      query: ''
    });
  }
但当我在浏览器中与

我在控制台中得到以下错误

Error retrieving icon: Failed to construct 'URL': Invalid URL
我尝试了SVG的各种相对路径,该路径位于“资源”下的“图像”文件夹中,我尝试了./,/,并使其相对于路径..//

我能够让它工作的唯一方法是指定完整的URL,但这在部署时会有所不同,我知道SVG的路径应该是相对的

有人能给我建议吗

我能够让它工作的唯一方法是指定完整的URL,但部署时会有所不同

您已经解决了这个问题:它需要一个绝对URL而不是相对URL

为解决不同的部署问题,可以考虑使用Windows .Loo..Or原原地,这将为任何环境提供工作,只要应用程序的基本URL为/./P>

matIconRegistry.addSvgIconInNamespace(
  'capp',
  'reassign',
  domSanitizer.bypassSecurityTrustResourceUrl(window.location.origin + '/assets/images/reassign.svg')
);