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 ceci.Userrole est stocké dans localStorage mais n'est pas défini à temps, donc la fonction renvoie false avant de retourner true p> i obtenir la valeur USERROLE de Un service p> 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> p>
3 Réponses :
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 P>
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 Ceci peut fonctionner. P> false code>. Lorsque vous obtenez la réponse de getcurrenteerProfiledata () code> la fonction Vous pouvez à nouveau régler le drapeau. P> <button class="nav-link-btn" [routerLink]="['/corporate/dashboard']" *ngIf="corporatesDisabled"> Corporates </button>
Cela ne changera rien, sauf la détection de changement sera un peu plus rapide.
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;
}
}
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: ... the-element-want-want-to-afficher -Quelle-r ole-est-connu> code>
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' || ...) code>, le code doit êtresi (this.userrole == 'HR Admin '|| this.userrole ==' hr recruteur '|| this.userrole == ...) code>@skydev fait-il fonctionner maintenant?