错误:无法解析路由器

时间:2017-10-24 10:51:49

标签: angular angular2-routing

我想阅读网址查询参数,因此我使用RouterModule。我正在使用Angular 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页面的编码参数添加到此页面,我有一个服务,它将读取查询参数并解码这些参数。该参数类似于emailIdid等。因此我将使用emailid进一步使用。

1 个答案:

答案 0 :(得分:0)

您必须注册路线。请检查以下代码段。

app.module.ts

 android:layoutDirection="locale"
 android:textDirection="locale"

在依赖项下添加路由模块并将其恢复。

的package.json

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 { }