css - 向动态创建的组件添加样式
问题描述
我正在开发内容驱动的 Angular 应用程序。
为了概述,
- API 将共享富文本 JSON。
- 基于
type
响应的字段,将动态创建组件。
下面是示例 JSON,
{
text: 'This is paragraph',
}
下面的代码只适用于一个项目,如果我得到多个text
项目,它就不起作用。
text(offset, length, text: string) {
return text.substr(offset, length);
}
stlye(type: string, text: string): string {
switch (type) {
case 'blold': return `<b>${text}</b>`;
}
}
解决方案
您遇到的问题是时间问题。我无法找到确切的位置,但是在进行大胆更改时,您最终覆盖了原始修改的内容。如果您将控制台日志放在样式化组件的代码段中,您就会明白我在说什么
setTimeout(() => {
this.styleList.forEach(styleItem => {
console.log(this.test.nativeElement.innerHTML)
this.renderer.setProperty(this.test.nativeElement, 'innerHTML', this.test.nativeElement.innerHTML.replace(styleItem.styleText, styleItem.type));
});
}, 1000);
我还没有弄清楚同步问题的确切位置,但我已经设法产生了可能有助于您更好地理解问题的预期结果。
setTimeout(() => {
this.styleList.forEach(styleItem => {
const elements = this.test.nativeElement.getElementsByTagName('bw-information-plain-text')
for (var i=0; i<elements.length; i++) {
this.renderer.setProperty(elements[i], 'innerHTML',
elements[i].innerHTML.replace(styleItem.styleText, styleItem.type));
}
});
}, 1000);
祝你好运
推荐阅读
- c# - 使用 Linq 将字符串解析为 int[]
- php - DOMDocument - 在不添加命名空间的情况下获取节点 XML
- javascript - 在 javascript 文件中使用 maven 原型模板变量
- python - 在 Python 中使用函数的新手
- python-3.x - 玩家和电脑尝试删除1-3,直到数字达到0。如何确保电脑每次都获胜?
- php - Laravel eloquent 从相关表中获取详细信息
- json - 赛普拉斯夹具结构 json 和类型
- php - 在 Laravel 7 中出现“401”未经授权的错误
- javascript - Firebase 云功能对 Xstate 没有任何作用
- python - 如何使用我在类中动态构建的实例的按钮