【发布时间】:2019-07-30 19:25:05
【问题描述】:
我正在尝试使用 angular renderer2 通过 DOM 操作添加一些样式。
我可以更新 anchor 期望的所有 html 元素的样式。
在下面的例子中,我试图用这个 World 替换这个文本 www.url.com 到一个锚链接。
注意:仅尝试更改文本,而不是 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 链接以供参考。
请帮忙。
【问题讨论】:
-
它不是关于 css,它是 styleList,它会告诉用什么文本替换
-
代码中的问题是您正在替换事件“href”与您的正则表达式匹配的文本。尝试更改为
'>www.url.com<'和'><i>World</i><',这将起作用。如果仍然可以使用空格字符,您也可以匹配空格字符。另外,我认为像您所做的那样更改 HTML 并不是一个好主意。 1)在这里使用渲染器没有任何意义。 2)如果您需要转换显示值,您可以创建一个管道,该管道将处理一个值并使用映射匹配文本(使用键值对) -
为什么
href被替换,而不是您可以在此处阅读的文本 w3schools.com/jsref/jsref_replace.asp 注释 -
只有
anchor怎么办? -
您的设计是这里的问题。你需要重新架构
标签: javascript html angular typescript renderer