2016-03-12 11 views
12

app.tsで、私はアクションでhome/contract-view/10にナビゲートしようと考えています。試してみましたAurelia router navigate&navigateToRoute

this.router.navigateToRoute(`home/contract-view`, { id: 10}, { absolute: true }); 

Route home/contract-view not be found

もう一つの試みで失敗します。

this.router.navigate(`#/home/contract-view`, { id: 10}); 

は、これを達成するためにどのようにRoute not found: contract-view(…) で失敗しますか? App.ts:

configureRouter(config: RouterConfiguration, router: Router) { 
     config.title = 'Contracts Portal'; 
     config.map([ 
      { route: ['', 'dummy'], name: 'dummy', moduleId: 'dummy', nav: false, title: 'Dummy', settings: { pos: 'left' } }, 
      { route: 'home', name: 'home', moduleId: 'home', nav: true, title: 'Home', settings:{pos: 'left', class: 'home' }, auth: true }, 
     ]); 
     this.router = router;  
    } 

Home.ts:

configureRouter(config: RouterConfiguration, router: Router) { 
     config.map([ 
      { route: ['', 'contract-view/:id'], name: 'contract-view', moduleId: 'contract-view', nav: true, title: 'Contract' }, 
      { route: 'doc-view/:id', name: 'doc-view', href:'doc-view', moduleId: 'doc-view', nav: true, title: 'Document' }, 
     ]); 

     this.router = router; 
     this.router.refreshNavigation(); 
    } 

答えて

6

あなたはcontract-view/:idで構成された 'ホーム' 内のルータを持っているので、あなたがthis.router.navigate('home/contract-view/10')を必要としています。そして削除しようとするthis.router.refreshNavigation()

0

ありがとう@valichek、 ちょうどそれが動作するようにそれをthis.router.navigate('/home/contract-view/10')にしなければならなかった。初めにその余分な/が違いになりました。

25

ルータで設定した名前付きルートを使用することをお勧めします。

this.router.navigateToRoute('contract-view', {id: 10}); 
+1

これは正解です。 –

+0

これは、子ルートでは機能しません。 –

+0

それはかなり子供のルートで動作する – weagle08