无法修改锚元素的 innerHTML
Unable to modify innerHTML for anchor element
我正在尝试使用 angular renderer2 通过 DOM 操作添加一些样式。
我可以为 anchor
.
之外的所有 html 元素更新样式
在下面的示例中,我正在尝试将此文本 www.url.com
替换为此 World
到锚 link.
注意:仅尝试更改文本,而不是 href
styleList = [
{
ori: 'www.url.com',
replace: 'World'
}
];
当我检查 <a href="wWorld">www.url.com</a>
时,replace
文本被添加到 href
。
所以预期的输出应该是<a href="wwww.url.com">World</a>
为什么这只发生在 anchor
标签上?
下面是函数,它将更新 DOM
styleList.forEach(styleItem => {
for (const childNode of childNodes) {
renderer.setProperty(childNode, 'innerHTML', childNode.innerHTML.replace(styleItem.ori, styleItem.replace));
}
});
您可以查看此stackblitz link以供参考。
请帮忙。
这是我取得的成就
https://stackblitz.com/edit/angular-mdhle9?file=src/app/style.service.ts
我做的主要事情是将您的服务更改为使用 RegExp 组
for (const childNode of childNodes) {
const regex = new RegExp('<(.*)>' + styleItem.ori + '<(.*)>')
renderer.setProperty(childNode, 'innerHTML', childNode.innerHTML.replace(regex, '<>' + styleItem.replace + '<>'));
}
这里我创建了两个匹配组,它们将复制 HTML 开始和结束标签的内部。
然后我简单地 return 这些组(内部标签)回到 < >
并将值放在它们之间。
我正在尝试使用 angular renderer2 通过 DOM 操作添加一些样式。
我可以为 anchor
.
在下面的示例中,我正在尝试将此文本 www.url.com
替换为此 World
到锚 link.
注意:仅尝试更改文本,而不是 href
styleList = [
{
ori: 'www.url.com',
replace: 'World'
}
];
当我检查 <a href="wWorld">www.url.com</a>
时,replace
文本被添加到 href
。
所以预期的输出应该是<a href="wwww.url.com">World</a>
为什么这只发生在 anchor
标签上?
下面是函数,它将更新 DOM
styleList.forEach(styleItem => {
for (const childNode of childNodes) {
renderer.setProperty(childNode, 'innerHTML', childNode.innerHTML.replace(styleItem.ori, styleItem.replace));
}
});
您可以查看此stackblitz link以供参考。
请帮忙。
这是我取得的成就 https://stackblitz.com/edit/angular-mdhle9?file=src/app/style.service.ts
我做的主要事情是将您的服务更改为使用 RegExp 组
for (const childNode of childNodes) {
const regex = new RegExp('<(.*)>' + styleItem.ori + '<(.*)>')
renderer.setProperty(childNode, 'innerHTML', childNode.innerHTML.replace(regex, '<>' + styleItem.replace + '<>'));
}
这里我创建了两个匹配组,它们将复制 HTML 开始和结束标签的内部。
然后我简单地 return 这些组(内部标签)回到 < >
并将值放在它们之间。