结构指令传递HTML元素属性值

我正在使用Angular CLI 6.1.4,目前正在努力解决以下问题:

我创建了一个结构指令,该指令的工作方式类似于*ngIf,但采用html元素的name或id属性值来确定其是否显示。

问题是我无法将<button>的name属性传递给结构指令。

我的按钮:

<button name="bla" *ngIfVisible="this.name">TEST</button> //this is not working!

我的结构指令

import { Directive,TemplateRef,ViewContainerRef,Input } from '@angular/core';
import { UserPermissionService } from '../services/user-permission.service';

@Directive({
  selector: '[ngIfVisible]'
})
export class NgIfVisible {

  constructor(private templateRef: TemplateRef<any>,private viewContainer: ViewContainerRef,private userPermissionService: UserPermissionService) { }

  @Input()
  set ngIfVisible(name: any) {
      if (this.userPermissionService.isElementVisible(name)) {
        this.viewContainer.createEmbeddedView(this.templateRef);
      } else {
        this.viewContainer.clear();
      }
  }
}

我只是希望将名称bla传递给指令...

我已经尝试过:

<button #name="bla" *ngIfVisible="name">TEST</button>

<button name="bla" *ngIfVisible="$(this).attr('name')">TEST</button>

但是它们都不起作用...请帮助!

sugartian 回答:结构指令传递HTML元素属性值

尝试:

<button *ngIfVisible="name;name:'bla'">TEST</button>

在您的指令中,将额外的name属性读为ngIfVisibleName(注意这里的Name而不是name的属性),只是读为Input就像您使用ngIfVisible一样。

How to use Angular structural directive with multiple inputs

本文链接:https://www.f2er.com/2638869.html

大家都在问