组件属性未在 innerHTML html 中呈现

Posted

技术标签:

【中文标题】组件属性未在 innerHTML html 中呈现【英文标题】:Component property not rendering in the innerHTML html 【发布时间】:2022-01-20 06:39:37 【问题描述】:

我在 innerhtml 的帮助下将一个 svg 文件渲染到我的组件中。 我的 svg 文件有一些在我的组件中定义和设置的属性,如宽度、高度等。 Svg 文件中的内容通过 innerHTML 渲染到组件中,但不渲染属性值。

@Component(
    selector: 'my-svg',
    template: '<div [innerHTML]="svgContents"></div>'
)
    export class MySvgComponent implements onInit 

    @Input() text="testing model";
    public svgContents:any;

    constructor(private readonly httpClient: HttpClient) 

    ngOnInit(): void 
          this.httpClient.get(path).subscribe((res) => 
                  
            this.svgContents = this.sanitizer.bypassSecurityTrustHtml(res as string);
          ); //getting html string

               
    


在 Svg 文件中

<span>
text
<svg>*icon content*</svg>
</span>

结果是:

属性文本未呈现

Edit1:文本属性只是一个示例。我在组件中使用多个属性来设置 svg 中的宽度高度,这些属性也没有被渲染。

【问题讨论】:

【参考方案1】:

text 从 svg 移动到模板:

@Component(
    selector: 'my-svg',
    template: '<div>
                 <span>
                   text
                   <div [innerHTML]="svgContents"></div>
                 </span>
               </div>'
)

这是因为 Angular 无法解释来自外部文件的属性。

【讨论】:

我实际上是在尝试使用这些变量在 svg 中设置属性。有可能吗? 当然!您可以使用 SVG 文件作为模板:angular.io/guide/svg-in-templates :)

以上是关于组件属性未在 innerHTML html 中呈现的主要内容,如果未能解决你的问题,请参考以下文章

HTML 组件未在电子反应应用程序中呈现

点亮的 Web 组件未在属性更改时更新

未在 React 中呈现的元素上的触发事件侦听器

Ng2 innerHTML 如何允许样式属性? [复制]

ReactJS:组件未在嵌套路由中呈现

React 组件道具未在 Next.js 页面中呈现