2016-12-16 6 views
1

私はangular2アプリケーション上で私のルートを設定しています:Angular2のルーティング設定(2つのパラメータを持つルート)

ので、app.routes.ts上:

現在
export const ROUTES: Routes = [{ 
    path: '', redirectTo: 'login', pathMatch: 'full' 
    }, { 
    path: 'app', loadChildren:() => System.import('./layout/layout.module') 
    }, { 
    path: 'login', loadChildren:() => System.import('./login/login.module') 
    }, { 
    path: 'validate/:id/:token', loadChildren:() => System.import('./validate/validate.module') 
    }, { 
    path: 'error', component: ErrorComponent 
    }, { 
    path: '**', component: ErrorComponent 
    } 
]; 

、私は2つの問題を上に向けています:私はhttp://localhost:3000に行くとき

  1. は、http://localhost:3000/Living%20User%20Platform#/loginにリダイレクトされます:このLiving%20User%20Platform#がURLに追加された理由を私はかなり0123の代わりに、把握していません。
  2. ご覧のとおり、2つのパラメータ(validate/:id/:token)を設定しています。それでも、私はブラウザ上(http://localhost:3001/Living%20User%20Platform#/validate?id=sdfsdf&token=sdfsdfを)このURLを足すだとき、それはルートをエラーに行く:

ValidateModule.ts

export const routes = [ 
    {path: '', component: Validate, pathMatch: 'full'} 
]; 

@NgModule({ 
    declarations: [ 
    // Components/Directives/ Pipes 
    Validate 
    ], 
    imports: [ 
    CommonModule, 
    FormsModule, 
    RouterModule.forChild(routes), 
    ] 
}) 
export default class ValidateModule { 
    static routes = routes; 
} 

任意のアイデア?

答えて

2

あなたがHTMLで正しい<base href="/">を設定していないとURL validate/:id/:tokenのためにあなたは私が単にvalidateパスで私のルート(validate/:id/:tokenを変更したUTL http://localhost:3001/Living%20User%20Platform#/validate/sdfsdf/sdfsdf

+0

ありがとう@ ranakrunal9。私はそれを持っている。最後の問題(パラメータ付きのルート)によると、 '' validate?id = x&token = t'のような '' path "'パラメータの代わりに、クエリパラメータでurlを受け入れるためにルートパスを設定する方法がありますか? – Jordi

+0

'NavigationExtras'を使うと、あるコンポーネントから別のコンポーネントにリダイレクトするときに、パラメータを' queryParams'として渡すことができます。パラメタをルーティングパラメタとして宣言することなく直接パラメタをパラメタとして送ることができます。コンポーネントではurlから 'queryParams'を得るために' ActivatedRoute'を使う必要があります。 https://angular.io/docs/ts/latest/guide/router.htmlを確認してください – ranakrunal9

+0

ありがとう@ ranakrunal9。私は 'http:// localhost:3000/validate?id = i&token = t'に行くと、' component + template'のバリデーションが表示されますが、ブラウザのURLで検出しました'http:// localhost:3000/login'に行きます。私は子ルートを定義するモジュールコードを投稿しました( '' ''のみ)。何か間違えている? – Jordi

0

に確認する必要があるかもしれないのであなたのルートにLiving%20User%20Platformを取得しています)ために

export const ROUTES: Routes = [{ 
    path: '', redirectTo: 'login', pathMatch: 'full' 
    }, { 
    path: 'app', loadChildren:() => System.import('./layout/layout.module') 
    }, { 
    path: 'login', loadChildren:() => System.import('./login/login.module') 
    }, { 
    path: 'validate', loadChildren:() => System.import('./validate/validate.module') 
    }, { 
    path: 'error', component: ErrorComponent 
    }, { 
    path: '**', component: ErrorComponent 
    } 
]; 

ActivatedRouteを使用してコンポーネントからクエリパラメータを得る:

constructor(private router: Router, private route: ActivatedRoute, private userService: UsersService) 
    { 
    this.user = undefined; 
    } 

    ngOnInit():void { 
    this.route.queryParams.subscribe(params => { 
     this.id = params['id'] || undefined; 
     this.token = params['token'] || undefined; 
    }); 
    } 
関連する問題