web-dev-qa-db-ja.com

AureliaルーターのナビゲートとnavigateToRoute

App.tsでは、アクションで_home/contract-view/10_に移動しようとしています。試しました

_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();
    }
_
14
TSR

_contract-view/:id_で構成されたルーターが 'home'にあるため、this.router.navigate('home/contract-view/10')が必要です。そしてthis.router.refreshNavigation()も削除してみてください

7
valichek

推奨される解決策は、ルーターで構成した名前付きルートを使用することです。

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

@valichekに感謝します。機能させるには、this.router.navigate('/home/contract-view/10')にする必要がありました。その余分な/最初に違いがありました。

0
TSR