为什么在 Angular 中删除组件模板中的 DOM 元素不安全
Why deleting DOM element inside component template is not safe in Angular
因为 Angular 在内部表示使用通常称为视图或组件视图的数据结构的组件 source 并且更改检测在此工作数据结构,我应该怎么做才能实现类似于:
var el = document.getElementById('someSelector');
el.remove();
是否可以不使用 View Container 技术?如果不是,那么对 DOM 元素
进行这种限制操作的原因是什么
虽然我鼓励您使用 Angular 的内置结构指令更新 DOM,但您可以使用 Renderer2 class 来实现您想要的之后:
@Component({
...
template: `
<div #parent>
<div #child></div>
</div>
<button (click)="removeElement()"></button>
`
...
})
export class ExampleComponent {
@ViewChild('parent') parentEl: ElementRef;
@ViewChild('child') childEl: ElementRef;
constructor(private readonly _renderer: Renderer2) {}
removeElement(): void {
this._renderer.removeChild(this.parentEl.nativeElement, this.childEl.nativeElement);
}
}
因为 Angular 在内部表示使用通常称为视图或组件视图的数据结构的组件 source 并且更改检测在此工作数据结构,我应该怎么做才能实现类似于:
var el = document.getElementById('someSelector');
el.remove();
是否可以不使用 View Container 技术?如果不是,那么对 DOM 元素
进行这种限制操作的原因是什么虽然我鼓励您使用 Angular 的内置结构指令更新 DOM,但您可以使用 Renderer2 class 来实现您想要的之后:
@Component({
...
template: `
<div #parent>
<div #child></div>
</div>
<button (click)="removeElement()"></button>
`
...
})
export class ExampleComponent {
@ViewChild('parent') parentEl: ElementRef;
@ViewChild('child') childEl: ElementRef;
constructor(private readonly _renderer: Renderer2) {}
removeElement(): void {
this._renderer.removeChild(this.parentEl.nativeElement, this.childEl.nativeElement);
}
}