我创建了一个简单的角度指令,在这里我控制一个元素是否会被显示。我无法执行的是:
@Directive({
selector: '[needPermission]'
})
export class NeedPermissionDirective {
private visible = true;
constructor(private templateRef: TemplateRef < any > , private viewContainer: ViewContainerRef) {}
@Input() set needPermission(permissionId: string) {
if (this.visible === true) {
// TODO-1: Modify an attribute for an element within the templateRef
// TODO-2: Add an html element to the templateRef like a <div>
this.viewContainer.createEmbeddedView(this.templateRef);
} else {
this.viewContainer.clear();
}
})
}
}
发布于 2022-01-31 15:29:16
下面是一个修改属性的示例
import { AfterViewInit, Directive, ElementRef, Renderer2 } from '@angular/core';
@Directive({
selector: '[imgError]'
})
export class ImgErrorDirective implements AfterViewInit {
constructor(private _elRef: ElementRef, private _renderer: Renderer2) { }
ngAfterViewInit(){
try{
this._elRef.nativeElement.childNodes[0].childNodes[0]
.childNodes[0].childNodes[0].childNodes
.forEach((child: any)=>{
this._renderer.setAttribute(child.childNodes[0]
.childNodes[0].childNodes[0], 'onerror', "this.src='assets/img/no-
photo.jpg'");
});
}catch{}
}
}在本例中,我循环一个包含img的childNodes列表,并修改每个列表的onerror属性。
https://stackoverflow.com/questions/70928160
复制相似问题