Angular2 Router - 有条件地隐藏链接
Angular2 Router - conditionally hide links
有没有办法在 Angular2 中有条件地隐藏路由器-link?
比如我有下面的代码;
<li><a [routerLink]="['RegisterUser']">Register User</a></li>
我想在用户登录时隐藏link。
在我的组件上,我使用 @CanActivate
装饰器来确定路由是否可以被激活,但这并没有隐藏 link 本身。
@CanActivate(() => hasValidToken())
我可以将*ngIf
结构指令与hasValidToken()
方法(returns一个布尔值)一起使用,但这看起来很笨拙有点脏。
<li><a [routerLink]="['RegisterUser']" *ngIf="!hasValidToken()">Register User</a></li>
有没有更简洁的方法来解决这个问题?
谢谢
我是怎么做到的,如果你想在未来添加更多路由,创建一个带有观察登录事件的可观察对象的服务会更容易。
然后我只使用 ngOnChanges,当有人登录时,我将其他菜单项附加到我的菜单并在我的 [routerLink] 上执行 *ngFor 循环。
@Component({
selector: 'my-cmp',
template: `<li *ngFor="#prop in myProps><a [routerLink]="[prop]">Register User</a></li>`
})
class MyComponent implements OnChanges {
@Input() LoggedIn: any;
constructor(){
myProps = ['About_Me', 'Not_Logged_In_Menu_Item'];
}
ngOnChanges(changes: {[propName: string]: SimpleChange}) {
myProps.push(changes['LoggedIn'].currentValue);
console.log('ngOnChanges - myProps = ' + changes['myProps'].currentValue);
}
}
不过,我这样做的唯一原因是,如果您感觉不对,您将不得不为登录用户更改其他菜单项。这是针对 Auth 和 Auth 应用程序,其中一些用户比其他用户拥有更多访问权限。
有没有办法在 Angular2 中有条件地隐藏路由器-link?
比如我有下面的代码;
<li><a [routerLink]="['RegisterUser']">Register User</a></li>
我想在用户登录时隐藏link。
在我的组件上,我使用 @CanActivate
装饰器来确定路由是否可以被激活,但这并没有隐藏 link 本身。
@CanActivate(() => hasValidToken())
我可以将*ngIf
结构指令与hasValidToken()
方法(returns一个布尔值)一起使用,但这看起来很笨拙有点脏。
<li><a [routerLink]="['RegisterUser']" *ngIf="!hasValidToken()">Register User</a></li>
有没有更简洁的方法来解决这个问题?
谢谢
我是怎么做到的,如果你想在未来添加更多路由,创建一个带有观察登录事件的可观察对象的服务会更容易。
然后我只使用 ngOnChanges,当有人登录时,我将其他菜单项附加到我的菜单并在我的 [routerLink] 上执行 *ngFor 循环。
@Component({
selector: 'my-cmp',
template: `<li *ngFor="#prop in myProps><a [routerLink]="[prop]">Register User</a></li>`
})
class MyComponent implements OnChanges {
@Input() LoggedIn: any;
constructor(){
myProps = ['About_Me', 'Not_Logged_In_Menu_Item'];
}
ngOnChanges(changes: {[propName: string]: SimpleChange}) {
myProps.push(changes['LoggedIn'].currentValue);
console.log('ngOnChanges - myProps = ' + changes['myProps'].currentValue);
}
}
不过,我这样做的唯一原因是,如果您感觉不对,您将不得不为登录用户更改其他菜单项。这是针对 Auth 和 Auth 应用程序,其中一些用户比其他用户拥有更多访问权限。