首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在角TemplateRef中添加和修改元素

如何在角TemplateRef中添加和修改元素
EN

Stack Overflow用户
提问于 2022-01-31 15:04:42
回答 1查看 1.2K关注 0票数 0

我创建了一个简单的角度指令,在这里我控制一个元素是否会被显示。我无法执行的是:

  1. 修改使用此指令的元素的属性
  2. 将html元素添加到相同的元素

代码语言:javascript
复制
@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();
    }

  })
}
}

EN

回答 1

Stack Overflow用户

发布于 2022-01-31 15:29:16

下面是一个修改属性的示例

代码语言:javascript
复制
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属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70928160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档