如何根据用户名授予对 HTML 元素的访问权限?

How to give access to HTML element based on user name?

我有一个按钮,如果他登录网站,我需要授予特定用户权限。我可以在 HTML 文件上使用 *ngIf 来执行此操作,但我想给 HTML 元素一个 id,然后对 .ts 文件执行权限操作。

<ul class="navbar-nav float-right" *ngIf="user.name === 'John'" >
  <li class="nav-item" >
    <a class="nav-link" routerLink="Private">Private</a>
  </li>
</ul>

提前致谢。

您可以在 html 文件中使用模板引用语法。并在您的组件代码中使用 ViewChild

<ul class="navbar-nav float-right" #privateUL>
  <li class="nav-item" >
    <a class="nav-link" routerLink="Private">Private</a>
  </li>
</ul>

--

  @ViewChild("privateUL", { static: false }) ul: ElementRef;

  ngAfterViewInit() {
    // modify your element
    this.ul.nativeElement.style.backgroundColor = "blue";
  }

检查此 stackblitz 示例。

HTML

 <ul class="navbar-nav float-right" id="ulPrivate">
      <li class="nav-item" >
        <a class="nav-link" routerLink="Private">Private</a>
      </li>
    </ul>

TS

const el: HTMLElement = document.getElementById('ulPrivate');
el.setAttribute("style", "color:red; border: 1px solid blue;");

显然根据适当的隐私条件将样式更改为 "display:none" 或 "display:block":user.name === 'John'

参考文献:

Declaring an HTMLElement Typescript

  1. 如果你想给元素动态添加id,你可以这样做
<ul class="navbar-nav float-right"  [attr.id]="'test'">
  <li class="nav-item" >
    <a class="nav-link" routerLink="Private">Private</a>
  </li>
</ul>

  1. 但我会向您推荐使用 ngIf 而不是像这样使用 id
<ul class="navbar-nav float-right"  *ngIf="FunctionFromTs()">
 <li class="nav-item" >
   <a class="nav-link" routerLink="Private">Private</a>
 </li>
</ul>

FunctionFromTs() 将 return 可见性的布尔值状态