@mirus36

Как внедрить зависимость в сервис Angular 2?

Не получается внедрить http модуль ангуляра в сервис. Натыкаюсь на такую ошибку
EXCEPTION: Can't resolve all parameters for UserService: (?)


//main.ts
import { bootstrap }    from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component';
import { HTTP_PROVIDERS } from '@angular/http';

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


//app.component.ts
import { Component } from '@angular/core';
import { MainMenuComponent } from './main-menu/main-menu.component';

@Component({
    selector: 'edpt-app',
    templateUrl: 'app/app.template.html',
    directives: [MainMenuComponent]
})
export class AppComponent { }


//main-menu.component.ts
import { Component } from '@angular/core';
import { UserService } from '../security/user.service';

@Component({
    selector: 'main-menu',
    templateUrl: 'site/main-menu.template',
    providers: [UserService]
})
export class MainMenuComponent {
    constructor(private userService: UserService) {
    }
}


//user.service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';

@Injectable()
export class UserService {
    private loggedIn;

    constructor(private  http: Http) {
    }
}
  • Вопрос задан
  • 554 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Ramallah
Похоже, что забустрапить его тебе надо, он же как инжектед.

Попробуй:
bootstrap(AppComponent, [HTTP_PROVIDERS, UserService])
Ответ написан
@bromzh
Drugs-driven development
Обычно такая ошибка возникает, когда нарушен порядок импортов/экспортов, либо что-то не проимпортировалось. Если тип внедряемой в конструктор зависимости по какой-то причине ещё не был загружен, то возникает такая ошибка. Причём, с точки зрения typescript всё нормально, ведь компилятор прежде всего смотрит на .d.ts-файлы.
В этой ситуации скорее всего в проект не правильно подключается http-модуль из ангуляра. Т.е. сами .d.ts-файлы подключаются нормально, а вот непосредстенно js-код в итоговую сборку не включается (или включается, но в неверной последовательности).

Но нужно видеть весь проект, чтобы сказать точнее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы