我有带有AuthService属性的isAuth和带有导航栏的布局,如果用户获得授权,我希望更改按钮。
肚脐部分
<div *ngIf="!this.auth.isAuth; then authorizedBlock else unauthorizedBlock"></div>
<ng-template #unauthorizedBlock>
<ul class="navbar-nav ms-2 ms-lg-auto">
<li class="nav-item">
<a class="nav-link btn btn-outline-primary" routerLinkActive="active" routerLink='login'>Login</a>
</li>
<li class="nav-item">
<a class="nav-link btn btn-outline-secondary" routerLinkActive="active" routerLink='registration'>Registration</a>
</li>
</ul>
</ng-template>
<ng-template #authorizedBlock>
<ul class="navbar-nav ms-2 ms-lg-auto">
<li class="nav-item">
<a class="nav-link btn btn-outline-primary" routerLinkActive="active" routerLink='profile'>Profile</a>
</li>
<li class="nav-item">
<a class="nav-link btn btn-outline-secondary" (click)="logout()">Logout</a>
</li>
</ul>
</ng-template>布局的一部分,我试着得到
constructor(private auth:AuthService, private router:Router) { }
ngOnInit(): void {
?????
}我需要改变什么才能让它起作用?
this.auth.isAuth引发属性为私有的错误
如果我使本地值等于this.auth.isAuth,则在我登录时它不会改变
发布于 2022-09-01 20:58:30
您可以通过拥有一个get函数来实现这一点。
在.ts文件中
public get isAuth(): boolean {
return this.auth.isAuth;
}在.html文件中:重构的一点
<ng-container *ngIf="isAuth; else unauthorizedBlock">
<ul class="navbar-nav ms-2 ms-lg-auto">
<li class="nav-item">
<a class="nav-link btn btn-outline-primary" routerLinkActive="active" routerLink='login'>Login</a>
</li>
<li class="nav-item">
<a class="nav-link btn btn-outline-secondary" routerLinkActive="active" routerLink='registration'>Registration</a>
</li>
</ul>
</ng-container>
<ng-template #authorizedBlock>
<ul class="navbar-nav ms-2 ms-lg-auto">
<li class="nav-item">
<a class="nav-link btn btn-outline-primary" routerLinkActive="active" routerLink='profile'>Profile</a>
</li>
<li class="nav-item">
<a class="nav-link btn btn-outline-secondary" (click)="logout()">Logout</a>
</li>
</ul>
</ng-template>另外,我们不需要在this文件中使用.html关键字。
https://stackoverflow.com/questions/73575011
复制相似问题