Angular RC4, один или несколько поставщиков для приложения не определены: [?]

После обновления моего приложения до angular2 до RC4 я получаю эту ошибку. Я внедрил LoginService в AppComponent в новом пакете стартовый webpack.

Я пытался включить AppComponent в маршруты, но это не сработает. Также я включал LoginService внутри index.ts с помощью APP_PROVIDERS, но получаю другую ошибку

Недопустимый провайдер — разрешены только экземпляры Provider и Type, получено: undefined

Также поместите LoginService в бутстрап, но безрезультатно.

Что не так с Angular2 в RC4? Компоненты больше не находятся в дереве?

Это моя конфигурация маршрутизатора для маршрутизатора «3.0.0-beta.2»:

export const routes: RouterConfig = [
  { path: '', component: StartPageComponent },
  { path: 'login', component: StartPageComponent },
  {
    path: 'dashboard', component: 'DashboardComponent',
    canActivate: [WebpackAsyncRoute],
    children: [
      { path: '', component: 'ContentDesktopComponent' }  // must be included
    ]
  },
  { path: '**', component: NoContent }

];

И я хочу, чтобы LoginService был доступен для каждого маршрута.

Мой app.component выглядит так:

@Component({
  selector: 'app',
  pipes: [],    
  providers: [LoginService, SearchService, TasksService],   
  directives: [RouterActive],
  encapsulation: ViewEncapsulation.None,
  styles: [
    require('!raw!normalize.css'),
    require('!raw!../assets/css/animate.css'),
    require('./app.component.scss')
  ],
  template: require('./app.component.html')
})
export class App {

  constructor(private translate: TranslateService,
    public appState: AppState) {

    Resource.map(ENDPOINTS.API.toString(), 'http://localhost:3002/api');
    let userLang = navigator.language.split('-')[0]; // use navigator lang if available
    userLang = /(fr|en)/gi.test(userLang) ? userLang : 'pl';
    translate.setDefaultLang('en');
    translate.use('pl');

  }

  ngOnInit() {

  }

}

провайдер недоступен для роутеров... сейчас... в rc4

ЛогинСервис:

@Injectable()
export class LoginService {

    private user: User = <User>{
        avatar_url: '/assets/img/avatars/u6.png'
    };

    constructor(private rest: Resource<ENDPOINTS, User, User[]>) {
        this.rest.add(ENDPOINTS.API, 'users');
    }

person Dariusz Filipiak    schedule 22.07.2016    source источник
comment
Пожалуйста, опубликуйте код, демонстрирующий, что вы пытались выполнить.   -  person Günter Zöchbauer    schedule 22.07.2016
comment
Как выглядит класс App с декоратором @Component()?   -  person Günter Zöchbauer    schedule 22.07.2016


Ответы (1)


Вам нужно предоставить TranslateService и AppState где-нибудь, либо в bootstrap(...), либо в @Component(..., providers: [...]

person Günter Zöchbauer    schedule 22.07.2016
comment
Еще: One or more of providers for "App" were not defined: [?, SearchService, TasksService, TranslateService]. - person Dariusz Filipiak; 22.07.2016
comment
Похоже, LoginService неправильно импортирован. Пожалуйста, обновите свой вопрос с кодом, который у вас есть в настоящее время. Я не могу знать, что ты изменил. - person Günter Zöchbauer; 22.07.2016
comment
это ошибка плотины, потому что теперь у меня есть 4 провайдера: providers: [LoginService, SearchService, TasksService, TranslateService], - person Dariusz Filipiak; 22.07.2016
comment
Ладно, проблема в моем расширении ng2-rest github.com/darekf77/ng2-rest . ... Даже когда Resource находится в провайдере, я все равно получаю эту ошибку (у меня уже есть Resource в начальной загрузке). Мой вопрос: есть ли проблема с сервисами общего класса, такими как Resource в RC4? - person Dariusz Filipiak; 22.07.2016
comment
Где и как вы предоставляете Resource? - person Günter Zöchbauer; 22.07.2016
comment
Окей проблема была с ENUMS. Когда я меняю ENDPOINT enum на type, он работает (здесь: private rest: Resource‹ENDPOINTS, {}, {}›) - person Dariusz Filipiak; 22.07.2016