0
votes

Valeur non définie en raison de la variable non définie dans le temps

J'ai un problème dans lequel une variable n'est pas définie à temps. Un en-tête est défini avant la variable qui dicte quels éléments d'en-tête pour montrer et ce que ne pas montrer est instancié. Voici mon code xxx

ceci.Userrole est stocké dans localStorage mais n'est pas défini à temps, donc la fonction renvoie false avant de retourner true

i obtenir la valeur USERROLE de Un service xxx

Ma question est de savoir comment puis-je vous assurer que l'USERROLE est définie avant de placer le code HTML afin que je ne reçois pas le non défini avant que la valeur du rôle réel n'existe < / p>


7 commentaires

Ces deux variables d'USerrole différentes sont-elles différentes? Injecter le service dans le composant que vous utilisez isdisabledCorporats avec ne fonctionne pas?


D'ACCORD. Mais ... quelle est votre question?


@Raphaelmayer désolé mis à jour


Utilisez * NGIF: ...


La cause semble être autre chose. J'ai durement codé le rôle et il montre toujours le bouton d'entreprise: /


Il est difficile de comprendre quel est le problème si vous ne le dites pas clairement. Notez que votre code est incorrect cependant. Au lieu de si (this.userrole == 'hR admin' || 'hr recruteur' || ...) , le code doit être si (this.userrole == 'HR Admin '|| this.userrole ==' hr recruteur '|| this.userrole == ...)


@skydev fait-il fonctionner maintenant?


3 Réponses :


-2
votes

On dirait que vous avez besoin que vous avez besoin de votre NGIF soit liée à la propriété non méthode, et cette propriété doit être modifiée avec l'abonné à userData


0 commentaires

-2
votes

semble un problème de base des opérations ASYNC. Fondamentalement, vous ne devriez jamais essayer de lier la valeur d'un appel de fonction à la vue. Vous devez toujours utiliser des variables pour lier la valeur.

Au lieu d'appeler la fonction de la vue Vous pouvez avoir une variable d'indicateur initialement définie sur une valeur indiquée sur false code>. Lorsque vous obtenez la réponse de getcurrenteerProfiledata () code> la fonction Vous pouvez à nouveau régler le drapeau. P>

Ceci peut fonctionner. P>

<button class="nav-link-btn" [routerLink]="['/corporate/dashboard']" *ngIf="corporatesDisabled"> Corporates </button>


1 commentaires

Cela ne changera rien, sauf la détection de changement sera un peu plus rapide.



0
votes

Tout d'abord, votre déclaration IF est fausse. Vous devez vérifier chaque relevé:

isDisabledCorporates(): boolean {
    if (
      this.userRole == 'HR Admin' || 
      this.userRole == 'HR Recruiter' || 
      this.userRole == 'HR Manager' || 
      this.userRole == 'Candidate' || 
      this.userRole == 'Operations administrator' || 
      this.userRole =='Internal Account Manager') {
      return true;
    } else {
      return false;
    }
  }


0 commentaires