仅在内部页面而不在登录/注册页面上显示导航

时间:2018-11-18 11:18:02

标签: angular angular6

我试图仅在应用程序的“内部页面”中显示导航栏,而不在登录/注册页面中显示。

我在navigation上创建了一个单独的组件,并在app.component.html中显示了它

<app-navbar *ngIf="navVisible"></app-navbar>
<div class="container">
  <router-outlet></router-outlet>
</div>

我认为,如果我使用*ngIf=navVisible,它会起作用,但不会。

app.component.ts

ngOnInit(): void {
    this.navVisible = this.authsrv.showNav();
 }

AuthenticationService.ts

showNav(): boolean {
    let path = window.location.pathname;
    let page = path.split("/").pop();

    if ((page.trim() === "login") || (page.trim() === "registration") || (page.trim() === "")) {
      return false;
    }
    else
      return true;
  } 

但是当我从登录名转到内页时,它不起作用。

我在navbar.component.html & navbar.component.ts中尝试了相同的方法 有人可以告诉我这是怎么回事吗?

1 个答案:

答案 0 :(得分:0)

在加载AppComponent(nanVisible)时设置ngOnInit的值,仅在启动应用程序时设置一次。

您可以通过在路线更改时进行更新来解决该问题:

constructor(private router: Router) {
   router.events.subscribe((event) => {
      if (event instanceof NavigationEnd) {
        this.navVisible = this.authsrv.showNav();
      }
    });
}

我想您要做的是将当前路由发送到您的showNav方法。