2 回答
TA贡献1831条经验 获得超10个赞
您应该使用 Renderer2 API 进行此类 DOM 操作。
在构造函数的 Component 类中注入它,如下所示:-
constructor(public renderer: Renderer2) {}
然后将您的方法更改为:-
private addLogElement(title: string, message: string): void {
const newNode = this.renderer.createElement('li');
this.renderer.addClass(newNode, 'log-message');
const newNodeTitle = this.renderer.createElement('span');
this.renderer.addClass(newNodeTitle, 'log-message-title');
const headerText = this.renderer.createText(title);
this.renderer.appendChild(newNodeTitle, headerText);
this.renderer.appendChild(newNode, newNodeTitle);
const parentDiv = this.renderer.selectRootElement(document.getElementById('log-list'), true);
const childDiv = this.renderer.selectRootElement(document.getElementById('log-item'), true);
this.renderer.insertBefore(parentDiv, newNode, childDiv);
}
您应该使用 Renderer2 而不是本机 DOM 操作还有其他原因。
您可以在此处参考这些原因:- https://medium.com/dev-genius/dont-use-native-dom-manipulations-in-angular-6c8db13f463f
TA贡献1828条经验 获得超6个赞
将其添加到您的css/scss
我已添加示例样式中
:host ::ng-deep .log-message{
color: red;
}
:host ::ng-deep .log-message-title{
background-color: #eeee33
}
添加回答
举报