2016-06-22 15 views
0

非推奨ベータ版からV3 alphap 0.7に角度ルータコンポーネントを移行しています。角2ルータV3:プロバイダーの例外がありません

私はセットアップを持っている私の

import { provideRouter,RouterConfig } from '@angular/router'; 

//Import components 
import {LoginComponent} from '../auth/component/login.component'; 
import {LogoutComponent} from '../auth/component/logout.component'; 
import {RegisterComponent} from '../auth/component/register.component'; 
import {ForgotpasswordComponent} from '../auth/component /forgotpass.component'; 
import {ResetpasswordComponent} from '../auth/component/resetpass.component'; 

export const routes: RouterConfig = [ 
{path:'user', redirectTo: '/user/login', terminal: true}, 
{path:'user/login', component: LoginComponent}, 
{path:'user/logout', component: LogoutComponent}, 
{path:'user/register', component: RegisterComponent}, 
{path:'user/register/admin', component: RegisterComponent}, 
{path:'user/register/librarytrial', component: RegisterComponent}, 
{path:'user/forgotpass', component: ForgotpasswordComponent}, 
{path:'user/forgotpass/:reset_code', component: ResetpasswordComponent} 
]; 

export const APP_ROUTER_PROVIDERS = [ 
provideRouter(routes) 
]; 

これは動作するはずです以下の通りであるが、何らかの理由でそれが次の例外を生成main.ts

import {bootstrap} from '@angular/platform-browser-dynamic'; 
import {AppComponent} from './component/app.component'; 
import {HTTP_PROVIDERS} from '@angular/http'; 
import {HttpService} from '../common/service/http.service'; 
import {enableProdMode} from '@angular/core'; 
import {disableDeprecatedForms, provideForms} from '@angular/forms'; 
import {APP_ROUTER_PROVIDERS} from '../routes/auth.routes'; 

enableProdMode(); 

bootstrap(AppComponent,[ 
APP_ROUTER_PROVIDERS, 
HTTP_PROVIDERS, 
HttpService, 
disableDeprecatedForms(), 
provideForms() 
]).catch(err => console.error(err)); 

そしてauth.routes.ts次のように:

platform-browser.umd.js:2311 Error: Uncaught (in promise): No provider for Router! 
at l (zone.min.js:1) 
at zone.min.js:1 
at e.invoke (zone.min.js:1) 
at Object.onInvoke (core.umd.js:9004) 
at e.invoke (zone.min.js:1) 
at e.run (zone.min.js:1) 
at zone.min.js:1 
at e.invokeTask (zone.min.js:1) 
at Object.onInvokeTask (core.umd.js:8995) 
at e.invokeTask (zone.min.js:1) 

ザ・ネットワークコールは、私がログインコンポーネントに私がかかることを示す上記のエラーが発生したテンプレートを読み込んだ後に失敗するはずのパスuserを入力してください。ここで

は、私はrouter-outletを主成分に存在することも確認されているログインコンポーネント

import {Component, OnInit, Input} from '@angular/core'; 
import {FormBuilder,Validators,FormControl,FormGroup,REACTIVE_FORM_DIRECTIVES} from '@angular/forms'; 
import {ROUTER_DIRECTIVES, Router, ActivatedRoute} from '@angular/router'; 
import {ConfigService} from '../../common/service/config.service'; 
import {AuthService} from '../service/auth.service'; 

import {Growl} from 'primeng/primeng'; 
import {Message} from 'primeng/primeng'; 

@Component({ 
    selector: 'login', 
    templateUrl: ConfigService.BASE_URL+'app/auth/views/login.ejs', 
    directives: [ROUTER_DIRECTIVES,REACTIVE_FORM_DIRECTIVES,Growl], 
    providers:[AuthService,FormBuilder] 
}) 

export class LoginComponent implements OnInit{ 

... 

constructor(private _form_builder: FormBuilder, private _auth_service:AuthService, private _router:Router,private _route:ActivatedRoute){ 

    ... 
} 

ngOnInit(){ 

    this._route.params.subscribe(params=>{ 

     this.redirect_to = params['redirect_to']; 

    }); 

} 

} 

の短いバージョンです。 私は何が欠けていますか?

答えて

4

最近の移行中にこのエラーが発生した原因の1つは、コンポーネントが@ angular/router-deprecatedをインポートしているということです。あなたのアプリコンポーネントや、loginでネストされた他のコンポーネントがrouter-deprecatedを呼び出していることを確認し、そうであれば@ angular/routerに置き換えてください。

+0

これはまさに私のケースです。すべてのルータ非推奨を削除した後、それは動作します! –

関連する問題