2016-05-02 36 views
6

İlk adımları Angular 2 ve genel olarak açılı olarak alıyorum ve bir açılış sayfasının nasıl ayarlanacağını merak ediyorum.Açısal 2 açılış sayfası

Amacım, kullanıcının yerel depolama alanında veya çerezde bir belirteci olmadığı her zaman bir açılış sayfası göstermek.

Benim app.component.ts bu

import {Component} from 'angular2/core'; 
import {ROUTER_DIRECTIVES, RouteConfig} from 'angular2/router'; 
import {NavbarComponent} from './navbar.component'; 
import {LoaderComponent} from './loader.component'; 
import {NameListService} from '../shared/index'; 
import {HomeComponent} from '../+home/index'; 
import {AboutComponent} from '../+about/index'; 

@Component({ 
    selector: 'g-app', 
    viewProviders: [NameListService], 
    templateUrl: 'app/components/app.component.html', 
    directives: [ROUTER_DIRECTIVES, NavbarComponent, LoaderComponent] 
}) 
@RouteConfig([ 
    { 
    path: '/', 
    name: 'Home', 
    component: HomeComponent 
    }, 
    { 
    path: '/about', 
    name: 'About', 
    component: AboutComponent 
    } 
]) 
export class AppComponent { 

} 

/ev gibi görünüyor ve/eğer doğru anlamak ilgili bileşenleridir. Şimdi, navona erişimi olmayan ayrı bir sayfaya sahip olmak istiyorum. Eğer oturum açmamışsa, kullanıcı her zaman yanına girecektir.

Biri bana iyi bir yönde başlamadan veya atmeast bana yardımcı olabilir, belki iyi bir köşeli 2 öğretici bana işaret edebilir eğer harika olurdu.

Bu

belirteç bulunmadığı durumlarda sadece yüke belirli bir rotaya yönlendirebilirsiniz ben https://github.com/mgechev/angular2-seed

+0

muhtemelen bir plunker yapmak için daha iyi olurdu – thegio

cevap

3

açıklandığı gibi izin verildiği takdirde her rota için denetler özel bir RouterOutlet oluşturabilir eğer belirteci varsa. Böyle bir şey:

import {Directive, Attribute, ElementRef, DynamicComponentLoader} from 'angular2/core'; 
import {Router, RouterOutlet, ComponentInstruction} from 'angular2/router'; 

@Directive({ 
    selector: 'router-outlet' 
}) 
export class LoggedInRouterOutlet extends RouterOutlet { 
    publicRoutes: any; 
    private parentRouter: Router; 

    constructor(_elementRef: ElementRef, _loader: DynamicComponentLoader, 
       _parentRouter: Router, @Attribute('name') nameAttr: string) { 
     super(_elementRef, _loader, _parentRouter, nameAttr); 

     this.parentRouter = _parentRouter; 

    } 

    activate(instruction: ComponentInstruction) { 
     if (!hasToken()) { 
      this.parentRouter.navigateByUrl('/login'); 
     } 
     return super.activate(instruction); 
    } 
} 

buradan Uyarlama: https://github.com/auth0-blog/angular2-authentication-sample/blob/master/src/app/LoggedInOutlet.ts


Bu rolleri ve diğer erişim kontrollerine çalışmak edebilmek için uzatılabilir.

+1

için aradığım şey, +1 sınıfının davranışını genişleten ilginç görünüyor –

1

benim app dayandırarak klişe olduğunu.

export class AppComponent { 
    constructor(private router:Router) { 
    if(!hasToken()) { 
     router.navigate(['/LoginForm']); 
    } 
    } 
} 

Alternatif kullanıcının bu rotaya gezinmesini Sen yönlendirici-çıkış geçersiz kılmak ve aktivasyon kontrol edebilirsiniz http://www.captaincodeman.com/2016/03/31/angular2-route-security/

+0

teşekkür ederim! – gempir