2016-11-09 8 views
12

Próbuję wstrzyknąć komponent ActivatedRoute do mojego komponentu, aby uzyskać dostęp do identyfikatora obiekt, który edytuję (lub dowiedzieć się, nie ma parametru ID, tworzony jest nowy obiekt).Błąd: (SystemJS) Nie można rozwiązać wszystkich parametrów dla ActivatedRoute: (?,?,?,?,?,?,?,?)

Utworzyłem tylko szablon dla komponentu, a kiedy załadować stronę startową (nie zdarzeń strona ze składnikiem chcę używać) pojawia się następujący błąd:

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

To jest mój Kod:

import { Component, OnInit } from '@angular/core'; 

import { ActivatedRoute} from "@angular/router"; 

@Component({ 
    selector: 'my-edit', 
    templateUrl: './templates/my-edit.htm', 
    providers: [ActivatedRoute] 
}) 

export class MyEditComponent implements OnInit { 

    constructor(private route : ActivatedRoute){ 
     console.log(route.params) 
    } 

    ngOnInit() : void { 
    } 

} 

jest on oparty na kodzie z przykładu z angularjs miejscu (Heroes), a ja naprawdę nie rozumiem, gdzie tu jest problem ... nie mogę importować ActivatedRoute do komponentu, lub muszę coś dodatkowe, aby móc go zaimportować?

Moja konfiguracja routingu:

@NgModule({ 
    imports: [ RouterModule.forRoot(routes) ], 
    exports: [ RouterModule ] 
}) 
export class AppRoutingModule {} 

gdzie routes to zbiór tras, tak jak w przykładzie kątowego i AppRoutingModule jest importowany w app.module.

+0

Czy podano 'Router.forRoot()' w 'AppModule'? –

+1

I nie dodawaj 'ActivatedRoute' do' @ Component.providers' –

+0

@peeskillet wydaje się, że, mam błąd, pomyślałem. Dostawcy są niezbędni do wstrzyknięcia params do konstruktora –

Odpowiedz

18

Usuń providers: [ActivatedRoute] z @Component() nie ma takiej potrzeby. RouterModule.forRoot() zapewnia już wszystko, co jest wymagane.

+1

Tak, przypuszczam Nieświadomie stworzyłem rodzaj cyklu ... –