J'ai un bouton dont j'ai besoin pour donner l'autorisation à un utilisateur spécifique s'il se connecte à un site Web. Je peux le faire avec * ngIf sur le fichier HTML mais je voudrais donner un identifiant à l'élément HTML, puis effectuer l'opération d'autorisation sur le fichier .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>
Merci d'avance.
3 Réponses :
Vous pouvez utiliser la syntaxe de référence de modèle dans votre fichier html. Et utilisez ViewChild au code de votre composant.
@ViewChild("privateUL", { static: false }) ul: ElementRef; ngAfterViewInit() { // modify your element this.ul.nativeElement.style.backgroundColor = "blue"; }
- -
<ul class="navbar-nav float-right" #privateUL> <li class="nav-item" > <a class="nav-link" routerLink="Private">Private</a> </li> </ul>
Consultez cet exemple de stackblitz .
HTML
const el: HTMLElement = document.getElementById('ulPrivate'); el.setAttribute("style", "color:red; border: 1px solid blue;");
<ul class="navbar-nav float-right" id="ulPrivate"> <li class="nav-item" > <a class="nav-link" routerLink="Private">Private</a> </li> </ul>
Évidemment, changez le style en "display: none" ou "display: block" selon la condition de confidentialité appropriée: user.name === 'John'
Références:
Déclarer un typescript HTMLElement
Comment définir plusieurs propriétés de style CSS dans dactylographié pour un élément?
<ul class="navbar-nav float-right" *ngIf="FunctionFromTs()"> <li class="nav-item" > <a class="nav-link" routerLink="Private">Private</a> </li> </ul>
<ul class="navbar-nav float-right" [attr.id]="'test'"> <li class="nav-item" > <a class="nav-link" routerLink="Private">Private</a> </li> </ul>
FunctionFromTs () qui retournera le statut booléen de visibilité