Angular 如何将 SVG 转换为 Base64 字符串
How to convert SVG to Base64 string in Angular
我想将 svg 元素转换为 base64 字符串。
我遵循了以下教程:https://thewebdev.info/2021/08/28/how-to-convert-inline-svg-to-base64-string-with-javascript/
这是我使用的代码:
HTML:
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
打字稿:
constructor (
@Inject(DOCUMENT) document: Document
) {
document.querySelector("svg")
}
ngOnInit() {
const s = new XMLSerializer().serializeToString(document.querySelector("svg"))
const encodedData = window.btoa(s)
console.log(encodedData)
}
但我在 .serializeToString(document.querySelector("svg"))
:
的 vs 代码中收到以下错误消息
'SVGSVGElement | null' 类型的参数不能分配给 'Node' 类型的参数 TS 2345
这里的问题是调用 ngOnInit 时 svg 没有初始化,因此 querySelector returns null。
在 ngAfterViewInit 中移动您的代码,如下所示:- .
ngAfterViewInit() {
const svg = document.querySelector("svg");
if (svg) {
const s = new XMLSerializer().serializeToString(svg)
const encodedData = window.btoa(s)
console.log(encodedData)
}
}
我想将 svg 元素转换为 base64 字符串。
我遵循了以下教程:https://thewebdev.info/2021/08/28/how-to-convert-inline-svg-to-base64-string-with-javascript/
这是我使用的代码:
HTML:
<svg height="100" width="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
打字稿:
constructor (
@Inject(DOCUMENT) document: Document
) {
document.querySelector("svg")
}
ngOnInit() {
const s = new XMLSerializer().serializeToString(document.querySelector("svg"))
const encodedData = window.btoa(s)
console.log(encodedData)
}
但我在 .serializeToString(document.querySelector("svg"))
:
'SVGSVGElement | null' 类型的参数不能分配给 'Node' 类型的参数 TS 2345
这里的问题是调用 ngOnInit 时 svg 没有初始化,因此 querySelector returns null。
在 ngAfterViewInit 中移动您的代码,如下所示:- .
ngAfterViewInit() {
const svg = document.querySelector("svg");
if (svg) {
const s = new XMLSerializer().serializeToString(svg)
const encodedData = window.btoa(s)
console.log(encodedData)
}
}