2016-12-08 3 views
2

Я начал приложение Angular2, и у меня проблема с тех пор!Угловая 2 - Не удается разрешить все параметры для компонента: (?)

Can't resolve all parameters for HomeComponent: (?).(…) 

Но мой вопрос не о конкретном поставщике: Everyting, что я пытаюсь привнести в моем HomeComponent конструкторе возвращаю эту ошибку. Никаких вопросов по подобным вопросам о том, что ошибки не разрешили мою ситуацию, и теперь я потратил столько времени на поиск этого, что я не могу его найти.

App.moodule.ts:

import { NgModule }  from '@angular/core'; 
    import { BrowserModule } from '@angular/platform-browser'; 
    import { RouterModule } from '@angular/router'; 
    import { SimpleNotificationsModule } from 'angular2-notifications'; 

    // Controllers 
    import { AppComponent } from './app.component'; 
    import { HomeComponent } from './components/home.component'; 

    // Service 
    import { AuthService } from './services/auth.service'; 

    // Guards 
    import { AuthGuard } from './guards/auth.guard'; 

    @NgModule({ 
    imports: [ 
     BrowserModule, 
     RouterModule.forRoot([ 
     { 
      path: '', 
      component: HomeComponent, 
      canActivate: [AuthGuard] 
     } 
     ]), 
     SimpleNotificationsModule 
    ], 
    declarations: [ 
     AppComponent, 
     HomeComponent 
    ], 
    providers: [ 
     AuthGuard, 
     AuthService, 
    ], 
    bootstrap: [ AppComponent ] 
    }) 

    export class AppModule { } 

Мой HomeComponent:

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

import { NotificationsService } from 'angular2-notifications'; 

import { AuthService } from '../services/auth.service'; 

@Component({ 
    selector: 'home', 
    templateUrl: '/templates/home.html' 
}) 

export class HomeComponent implements OnInit 
{ 
    public test: boolean = false; 

    constructor( 
     private _authService: AuthService 
    ) {} 

    ngOnInit() 
    { 
     this.test = true; 
    } 
} 

AuthService, что я пытаюсь импортировать пуст, и, как я сказал, что каждый провайдеров, которые я инъекционные взамен HomeComponent что ошибка. Каждый аргумент конструктора создает новый знак вопроса в ошибке. Дайте мне знать, если вам нужно больше кода, но я не думаю, что остальные (шаблоны, systemjs.config.js ...) проблема

+0

Я подозреваю, что что-то не так с импортом или конфигурацией проекта, а не с кодом. –

+0

Об этом, но что это может быть? Вам нужен конкретный файл? Ps: Когда я не добавляю никаких аргументов в конструктор, он работает нормально. –

+0

Извините, понятия не имею. Я не использую TS самостоятельно и не знаю о конфигурации проекта. –

ответ

4

Импорт этого

import {Inject} from '@angular/core'; 

И изменить свой конструктор

constructor(@Inject(AuthService) _authService: AuthService) 
{ 

} 

Вы должны @ Ввести любую службу в конструктор перед ее использованием.

и ваша служба должна быть инъекционный

@Injectable() 
export class AuthService { 

} 
4

Убедитесь, что вы

"emitDecoratorMetadata": true, 

в вашем tsconfig.js. Вам не нужно добавлять @Inject() к вашим параметрам функции, если это включено.

0

Вопрос, который поднял эту ошибку для меня, был совершенно иным. У меня была категория регистрации в компоненте, который я ошибочно использовал в службе, и, таким образом, у службы была зависимость от компонента и она не могла быть создана вовремя, чтобы она была введена в компонент.

TL; DR: Проверьте импорт на услугу, которую нельзя впрыснуть.

2

Моя проблема оказалась ничего. Я просто перезапустил webpack watcher, и тогда все было в порядке. Для справки, я использую Angular CLI.

Смежные вопросы