2016-11-10 58 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}') –