2016-04-14 33 views
1

Bazı navigasyon bağlantıları olan MainMenuComponent var. Bazı bağlantılar imzalanmış üyeler içindir, bazıları misafirler içindir, bazıları ise herkes içindir.Açısal 2 - Servisteki bileşen değişkeni görünümde değiştirilmedi

Ustam şablonu (master.html) şöyle görünür: my router-outlet

<main-menu></main-menu> 

<div class="container"> 
<router-outlet></router-outlet> 
</div> 

, bir login component var. Giriş yaparken, JwtService.jwtToken değişkenimi kullanıcı belirtecine değiştiriyorum. (Bir hizmet değişken)

girişten sonra, hala "Giriş" ve "Kayıt" menü bağlantıları görmek anlamına gelir O:

<li *ngIf="!JwtService.getToken()" [class.active]="isRouteActive(['/Login'])"><a [routerLink]="['Login']">Login</a></li> 
     <li *ngIf="!JwtService.getToken()" [class.active]="isRouteActive(['/Register'])"><a [routerLink]="['Register']">Register</a></li> 
     <li *ngIf="JwtService.getToken()" [class.active]="isRouteActive(['/Fight'])"><a [routerLink]="['Fight']">Fight</a></li> 
     <li *ngIf="JwtService.getToken()"><a (click)="logOut()">Log Out</a></li> 

Neden JwtService.getToken() değiştirilir yok benim <router-outlet> ancak dışında, ana menü bileşenimde, güncellenmiyor mu? Başka bir deyişle

** (el sayfayı yenileyin sürece):

JwtService.getToken() 

ve boş kalır: benim servis değişken giriş jwtService.setToken("MY_TOKEN"); kullandıktan sonra değiştirildiğinde, bana göre şu ifade değiştirilmez tarayıcımı/rotamı yenilemeye başladım **

+0

Bu, uygulamanızda neler olduğu hakkında pek fazla bilgi değil. Bir plunker oluşturabilir misin? –

+0

Uygulamam gerçekten çok büyük ve benim sorunum için kodun birçok alakasız bölümü var. Lütfen bu sorunu çözmek için hangi bilgilerin gerektiğini veya bu konuda genel bilgi almamı sağlayın. Daha fazla bilgi için gönderimi güncelledim. – TheUnreal

cevap

0

Angular2'de router-outlet dışındaki bileşenler ile aynı sorunu yaşadım.

Angular2, ApplicationRef.tick() yöntemini kullanarak tam bileşen ağacını kontrol etmeye zorlayabilirsiniz. Eğer kimlik doğrulama hizmeti gücünden yanıtını aldığınızda sonra

constructor(public appRef: ApplicationRef) 

:

yapıcı içine ApplicationRef enjekte ApplicationRef

import {ApplicationRef} from 'angular2/core'; 

başvurusunu ekleyin: login bileşeninde

Değişiklik algılamayı tekrar gözden geçirmek için Angular2 uygulaması:

this.appRef.tick(); // this will refresh the bindings 

Sizin main-menu bileşeniniz, beklenen şekilde güncelleştirilmelidir.

+0

Hâlâ güncelleme yok – TheUnreal

+0

Aşağıdaki kodları yapıştırın: ana menü bileşeni, JwtService ve ana önyükleme bileşeni? – kbugala

İlgili konular