要通过组件将动态SVG插入DOM,可以使用Angular的Renderer2类来操作DOM。以下是一个示例解决方法:
import { Component, ElementRef, Renderer2, ViewChild, OnInit } from '@angular/core';
@Component({
selector: 'app-svg-component',
template: '',
})
export class SVGComponent implements OnInit {
@ViewChild('svgContainer', { static: true }) svgContainer: ElementRef;
constructor(private renderer: Renderer2) {}
ngOnInit() {
// 创建SVG元素
const svgElement = this.renderer.createElement('svg');
this.renderer.setAttribute(svgElement, 'width', '200');
this.renderer.setAttribute(svgElement, 'height', '200');
// 创建一个圆形元素
const circleElement = this.renderer.createElement('circle');
this.renderer.setAttribute(circleElement, 'cx', '100');
this.renderer.setAttribute(circleElement, 'cy', '100');
this.renderer.setAttribute(circleElement, 'r', '50');
this.renderer.setAttribute(circleElement, 'fill', 'blue');
// 将圆形元素添加到SVG元素中
this.renderer.appendChild(svgElement, circleElement);
// 将SVG元素添加到DOM中
this.renderer.appendChild(this.svgContainer.nativeElement, svgElement);
}
}
这样就可以通过SVGComponent将动态SVG插入DOM中。在示例中,创建了一个SVG画布,并在画布上添加了一个蓝色圆形。你可以根据需要修改SVG元素的属性和样式。