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
を使用します。
は 'ステップバイステップimports'' Ng2DeviceDetectorModule.forRoot()私が ''そしてFlexLayoutModule、 ''そしてLayoutModule'と可能性が高いが、その原因 – yurzui
@yurzuiを見つけるを削除してくださいRouterModuleがコメントしました。 –
注 'RouterModule'には静的メソッド' forRoot'と 'forChild'もあります:https://angular.io/api/router/RouterModule – jonrsharpe