2016-03-24 14 views
2

Aynı rota düzeyindeki ve aynı üst yolu olan bir .ts dosyasında iki farklı Route Configs kullanmaya çalışıyorum. hizmet değişkeni değeri.Angular2: Harici bir değere göre belirli bir rota yapılandırma listesinin seçilebilirliğini nasıl elde edebilirim

Bir dış ayar değişkeninin değeri true ise, bir alt öğe listesi kullanacak ve diğeri ise ikinci listeyi kullanacaktır. Rota yolu ve seviyesi aynıdır.

Örn:

Veli rota /parent... (non terminali rota) daha sonra çocuk rota config if service.value is true o zaman aşağıdaki kullanacağız service.value is false eğer aşağıdaki rota yapılandırma başka

@RouteConfig([ 
    {path: '/', component: ChildComponent, name: 'ChildCmp' }, 
    {path: '/test', component: SecComponent, name: 'SecCmp' }, 
    {path: '/tester', component: OptionalComponent, name: 'ThCmp' } 
]) 

kullanacağız:

@RouteConfig([ 
    {path: '/', component: ChildComponent, name: 'ChildCmp' }, 
    {path: '/test', component: SecComponent, name: 'SecCmp' } 
]) 

Listeye inject güzergahı yapılandırma listeleri eklemek veya service.value dayalı tementler? Bu modülerliği nasıl elde edeceğiniz veya rotaların seçilebilirliği hakkında herhangi bir fikir var mı?

+0

Olası yinelenen [Anısal yol yapılandırmaları nasıl dinamik olarak/pragmatik olarak oluştururum?] (Http://stackoverflow.com/questions/35991639/how-do-i-generate-angular-route-configurations-dynamically-pragmatically) –

cevap

3

Rotaları dinamik olarak yapılandırabilmeniz için Router#config kullanabilirsiniz. İşte

class Child { 
    config = []; 
    constructor(public svc: Service, router: Router) { 
    if(svc.value == 1) { 
     this.config = [ 
     {path: '/', component: ChildComponent, name: 'ChildCmp' }, 
     {path: '/test', component: SecComponent, name: 'SecCmp' }, 
     {path: '/tester', component: OptionalComponent, name: 'ThCmp' }]; 
    } 
    else if(svc.value == 2) { 
     this.config = [ 
     {path: '/', component: ChildComponent, name: 'ChildCmp' }, 
     {path: '/test', component: SecComponent, name: 'SecCmp' } 
     ]; 
    } 

    // Set the config 
    router.config(this.config); 
    } 
} 

aşağıdaki çalışma örnekle bir plnkr olduğu gibi

Yani o kadar basit. Değerleri değiştirmek için Servis'teki değeri değiştirin.

+0

Yapılandırmayı dinamik olarak zorlayabileceğimiz anlamına mı geliyor? doğru? – Gary

+1

Tam olarak, diğer [soru] konusuna bakın (http://stackoverflow.com/a/35997976/4933038) (benzer bir yanıt) ve diğer [soru] 'yu görmek isteyebilirsiniz (http://stackoverflow.com/q/36114571/4933038) –

İlgili konular