Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Mettre un attribut public au lieu de privé


Sujet :

Angular

  1. #1
    Membre confirmé
    Mettre un attribut public au lieu de privé
    Bonjour ,
    je récupère dans le composant html si le visiteur est admin j'ai donc ceci comme code:

    Code html :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
        </button>
        <button  *ngIf="this.auth.isAdmin()" mat-button (click)="openDialog(courantCatego)">X </button>


    pour ne pas trop m'embêter j'ai mis auth en public au lieu de privé:

    Code javascript :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
        public auth:AuthenticationService,


    avant j'ai mis en privé mais j'ai une erreur de compilation en prod

    ng build --prod

    ERROR in src/app/matiere/matiere.component.html(13,14): Property 'auth' is private and only accessible within class 'MatiereComponent'.
    voici comment je défini s'il est admin
    Code javascript :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        isAdmin() {
     
            if (localStorage.getItem('token') != null) {//si pas de jeton pas de role
                this.getRolesToken();
                for (let r of this.roles) {
                    if (r.authority == 'ADMIN') return true;
                }
            } else {
                return false;
            }
        }


    penser vous qu'il set très gênant que je met cette attribut en public pour passer l'étape de la compilation ??

    merci de vos suggestions

  2. #2
    Membre averti
    oui quand meme.


    tu peux le mettre en privé et réer une méthode qui renvoi la valeur de auth....

  3. #3
    Membre confirmé
    merci de cette réponse,

    quand on fait du php par exemple, on sait qu'il faut mettre en privé les attributs afin qu'une autre classe ne puise pas modifier cette valeur ,
    mais ici comme c'est de l'angular et que si on est dans un autre templates , il ne peut pas avoir accès à auth sans qu'on importer le service.

    D'ailleur il me serais plus facile si c'était le cas car cette attribut me sert toujours pour savoir si c'est un admin ou pas, je l'aurais mis volontier en plublic
    pour qu'il puisse être diffuser sur l'ensemble du projet.

###raw>template_hook.ano_emploi###