gpt4 book ai didi

angular - 如何从 Angular 2 中的指令附加动态 DOM 元素?

转载 作者:太空狗 更新时间:2023-10-29 17:09:20 25 4
gpt4 key购买 nike

我有一个附加元素的 Angular 1.x 指令。简而言之:

app.directive('mydirective', function() {
template: '<ng-transclude></ng-transclude>',
link: function(el) {
var child = angular.element("<div/>");
el.append(child);
}

我可以像这样将此指令迁移到 Angular 2:

@Directive({
selector: '[mydirective']
})
export class MyDirective implements OnInit {
constructor(private elementRef: ElementRef) { }

ngOnit() {
var child = angular.element("<div/>");
this.elementRef.nativeElement.append(child);
}
}

困扰我的是nativeElement官方文档中的这段话:

Use this API as the last resource when direct access to DOM is needed.

我的问题是——我怎样才能正确地将这个指令迁移到 Angular 2?我唯一的要求是动态构建一个元素并使用指令将其附加到该元素。

最佳答案

使用Renderer Angular 提供的操作 DOM 的方法:

import { DOCUMENT } from '@angular/common';

export class MyDirective implements OnInit {
constructor(
private elementRef: ElementRef,
private renderer: Renderer2,
@Inject(DOCUMENT) private document: Document) { }

ngOnInit() {
const child = this.document.createElement('div');
this.renderer.appendChild(this.elementRef.nativeElement, child);
}
}

这不依赖于像 appendChild() 这样的原生 DOM API,所以在某种程度上它是一种独立于平台的方法。

关于angular - 如何从 Angular 2 中的指令附加动态 DOM 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45085567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com