2016-09-07 70 views
1

無法使用this.router.navigate。原始異常:沒有Router的提供者! angular 2 RC5

這是我的: app.module.ts

import {NgModule, NgModuleMetadataType}  from '@angular/core'; 
    import { BrowserModule } from '@angular/platform-browser'; 
    import {FormsModule} from '@angular/forms'; 
    import { HttpModule } from '@angular/http'; 
    ... 
    import {routing} from "./app.routing"; 
    import {entry} from "./entry.component"; 
imports: [ 
     BrowserModule, 
     FormsModule, 
     routing, 
     HttpModule, 
    ], 

測試組件

import { Component } from '@angular/core'; 
import {HttpClient} from "./HttpClient.component"; 
import {Router} from "@angular/router-deprecated"; 

@Component({ 
    templateUrl: 'templates/entry.html' 
}) 
export class entry { 
    ... 
    constructor(head:HeaderComponent, private httpClient: HttpClient, private router: Router) { 
     this.httpClient = httpClient; 
    } 
    nav_test(){ 
     this.router.navigate(['search']); 
    } 
} 

和app.routing

import { Routes, RouterModule } from '@angular/router'; 
const appRoutes: Routes = [ 
    { 
     path: '', 
     redirectTo: '/home', 
     pathMatch: 'full', 
    }, 
    { 
     path: 'home', 
     component: HomeComponent 
    }, 
    { 
     path: 'search', 
     component: SearchComponent 

    } 

]; 
export const routing = RouterModule.forRoot(appRoutes, {useHash: true}); 

,並在結束時,我有這樣的錯誤:

EXCEPTION: Error: Uncaught (in promise): EXCEPTION: Error in ./entry class entry_Host - inline template:0:0 ORIGINAL EXCEPTION: No provider for Router!

預先感謝您!

回答

1

問題是與你的測試組件進口,

您使用

import {Router} from "@angular/router-deprecated"; 

,你應該使用,

import { Router } from '@angular/router'; 

希望這有助於!

+0

洛爾thnaks爲你回答,我遲到了一分鐘的xD – Vendicto

+0

不知何故角隊仍然保持路由器過時,它應該開始有人報警,機器應該是着火了,如果你使用它..大聲笑,乾杯! –