2016-11-10 57 views
0

我有以下打字稿代码:隐藏菜单链接是真的还是假的

import { Component, OnInit } from '@angular/core'; 
import { AuthService } from '../services/auth.service'; 

@Component({ 
    selector: 'app-header', 
    templateUrl: './header.component.html' 
}) 

export class HeaderComponent implements OnInit { 

    constructor(private authService: AuthService) { } 

    ngOnInit() { 

    var isLoggedIn = false; 

    } 

} 

它具有以下HTML模板:

<nav class="navbar navbar-default"> 
<div class="container-fluid"> 
    <div class="navbar-header"> 
     <a class="navbar-brand" [routerLink]="['/']"> 
    Site Name 
    </a> 
    </div> 
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
     <ul class="nav navbar-nav pull-right"> 
      <li routerLinkActive="active"><a [routerLink]="['/login']">Login</a></li> 
      <li routerLinkActive="active"><a [routerLink]="['/sign-up']">Sign Up</a></li> 
      <li routerLinkActive="active" *ngIf="isLoggedIn"><a [routerLink]="['/logout']">Logout</a></li> 
     </ul> 
     <ul class="nav navbar-nav navbar-right"> 
    </ul> 
    </div> 
</div> 

正如你可以看到,如果在最后一个菜单链接(注销)中,我使用*ngIf来显示用户是否登录的链接。目前,我将这些值硬编码为假,如果我将其更改为true,则由于某种原因,链接仍然保持隐藏状态。

请注意,我正在学习Angular2。

回答

1
import { Component, OnInit } from '@angular/core'; 
import { AuthService } from '../services/auth.service'; 

@Component({ 
    selector: 'app-header', 
    templateUrl: './header.component.html' 
}) 

export class HeaderComponent implements OnInit { 

    isLoggedIn = false; 

    constructor(private authService: AuthService) { } 

    ngOnInit() { 



    } 

} 
+1

谢谢,这似乎是工作,你能告诉我有什么区别是从ngOnInit以外,当它在里面吗? –

+1

变量**创建/初始化**(例如使用var)函数内部的范围是该函数。这意味着它不能从函数外部访问。模板可以访问组件的作用域,只能看到在该组件中初始化的变量。通过移动它,我们将变量的范围从函数更改为组件。 另请注意,'var'的作用域限于一个函数,'let'和'const'仅限于任何块('{let initializedInBlock = 0}') –