【发布时间】:2016-09-16 20:31:59
【问题描述】:
除了登录页面之外,我在每个页面上都有一些我想要的元素。当用户在登录页面时,我想使用 ngIf 或元素的 hidden 属性来隐藏这些元素。
我试过这个:
<div [hidden]="router.isRouteActive(router.generate('/login'))">
基于这个问答:In Angular 2 how do you determine the active route?
也试过这个:
<div *ngIf="!router.isRouteActive(router.generate('/login'))">
但没有任何成功。
这里供参考的是与此html匹配的组件。
import { Component, OnInit } from 'node_modules/@angular/core';
import { HTTP_PROVIDERS, XHRBackend } from 'node_modules/@angular/http';
import { Routes, Router, ROUTER_DIRECTIVES } from 'node_modules/@angular/router';
import { LoginService } from './login/login.service';
import { LoginComponent } from './login/login.component';
import { UserComponent } from './user/user.component';
@Component({
selector: 'portal',
templateUrl: 'portal/portal.component.html',
directives: [ROUTER_DIRECTIVES, LoginComponent, UserComponent ],
providers: [
HTTP_PROVIDERS,
LoginService
]
})
@Routes([
{ path: '/login', component: LoginComponent},
{ path: '/user/:username', component: UserComponent}
])
export class PortalComponent implements OnInit{
private router: Router
constructor() {}
ngOnInit() {
this.router.navigate(['/login']);
}
}
isRouteActive 的文档非常精简,generate 也是如此。有什么更好的方法来实现这种行为吗?
【问题讨论】:
标签: typescript angular angular2-routing angular2-template