2017-10-24 13 views
0

URLクエリパラメータを読みたいので、RouterModuleを使用しています。私は角度2.4.10、ルータ3.4.10を使用しています。ここでエラー:ルータのすべてのパラメータを解決できません

は私のコードです:

app.module.ts

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { UpgradeModule, downgradeComponent, downgradeInjectable } from '@angular/upgrade/static'; 
import {HttpModule, Http, XHRBackend, RequestOptions} from '@angular/http'; 
import { RouterModule, Router } from '@angular/router'; 
import {LayoutModule} from '@angular/cdk/layout'; 

import {FlexLayoutModule} from '@angular/flex-layout'; 
import { Ng2DeviceDetectorModule } from '/thinkshop/angular2plugins/ng2-device-detector/index.ts'; 

import {httpFactory} from "/thinkshop/widgets2/thinkshopapplication/service/httpRequestInterceptorfactory/httpRequestInterceptorfactory.ts"; 
import { ActivateAccountService } from '/thinkshop/widgets2/thinkshopapplication/activateaccount/ActivateAccountService.ts'; 
import { SupportedDeviceService } '/thinkshop/widgets2/thinkshopapplication/service/supporteddeviceservice/supporteddeviceservice.ts' 
import { FormContainerComponent } '/thinkshop/widgets2/thinkshopapplication/component/formcontainer.component.ts' 
import { ActivateAccountComponent } from '/thinkshop/widgets2/thinkshopapplication/activateaccount/activateaccount.ts'; 


const CLIENT_ID= {clientId : ""}; 
const APP_NAME= 'web-ideolve'; 
const AUTH_TOKEN= ""; 
const CAN_EDIT= false; 

@NgModule({ 
    imports: [ 
       BrowserModule, 
       UpgradeModule, 
       HttpModule, 
       RouterModule, 
       LayoutModule, 
       FlexLayoutModule, 
       Ng2DeviceDetectorModule.forRoot() 
      ], 
    //exports: [RouterModule],  

    declarations: [ 
       FormContainerComponent, 
       ActivateAccountComponent 
       ], 
    entryComponents: [ 
         FormContainerComponent, 
         ActivateAccountComponent 
       ], 
    providers: [ 
       Router, 
       SupportedDeviceService, 
       ActivateAccountService, 
       {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]}, 
       {provide: 'CLIENT_ID', useValue: CLIENT_ID}, 
       {provide: 'APP_NAME', useValue: APP_NAME}, 
       {provide: 'AUTH_TOKEN', useValue: AUTH_TOKEN}, 
       {provide: 'CAN_EDIT', useValue: CAN_EDIT} 
     ], 
     bootstrap: [ FormContainerComponent ] 
}) 

export class AppModule { 

    showideolvelink= false; 

    constructor(private upgrade: UpgradeModule) { 
     this.showideolvelink= true; 
    } 
} 

service.ts

import { Injectable, OnInit } from '@angular/core'; 
import { ActivatedRoute } from '@angular/router'; 

@Injectable() 
export class ActivateAccountService implements OnInit{ 

    emailId: string= null; 

    constructor(private activatedRoute: ActivatedRoute) { 
    } 

    ngOnInit() : void{ 
     this.init(); 
    } 

    init(){ 
     let encodedParams: any = this.activatedRoute.snapshot.params.p; 

     if(encodedParams != null){ 
      var params= JSON.parse(atob(encodedParams)); 

      this.emailId= params.email; 
     } 
    } 

    getEmailId() : string{ 
     return this.emailId; 
    }  
} 

コンソールのエラーが表示されます。

Error: Can't resolve all parameters for Router: (?, ?, ?, ?, ?, ?, ?, ?). 

注:私はこのページに別のHTMLページからエンコードされたパラメータを追加していると私は、クエリのparamを読み、それらのパラメータをデコードするサービスを持っています。そのパラメータはemailId,idなどのようになりますので、今後はemailidを使用します。

+0

は 'ステップバイステップimports'' Ng2DeviceDetectorModule.forRoot()私が ''そしてFlexLayoutModule、 ''そしてLayoutModule'と可能性が高いが、その原因 – yurzui

+0

@yurzuiを見つけるを削除してくださいRouterModuleがコメントしました。 –

+0

注 'RouterModule'には静的メソッド' forRoot'と 'forChild'もあります:https://angular.io/api/router/RouterModule – jonrsharpe

答えて

0

ルートを登録する必要があります。次のコードスニペットを確認してください。

app.module.ts

import { RouterModule, Routes } from '@angular/router'; 

//your routes 
export const routes: Routes = [ 
    { path: '', component: HomeComponent }, 
    { path: 'aboutus', component: AboutUsComponent } 
] 

@NgModule({ 
    declarations: [ ... ], 
    imports: [ 
     ... 
     RouterModule.forRoot(routes) //register routes 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

は、依存関係の下でルートモジュールを追加し、それを復元します。

package.json

"dependencies": { 
    .... 
    "@angular/router": "^4.2.4", 
    .... 
} 
+0

私はルートを持っていません。クエリパラメータが必要なので、ルータを使用しています。 –

+0

ルータモジュールを正しくインポートしましたか? package.jsonの依存関係にあるバージョンのルータモジュールを追加して復元します。 node_moduleで見つからないため、未定義になっています。 – MarkiE

+0

経路のないクエリパラメータで何をするのですか?あなたが解決しようとしていることを説明できる方が良いでしょう。 – MarkiE

関連する問題