2016-12-13 3 views
0

У меня есть некоторые трудности с поставщиком. Я пытаюсь импортировать новый пользовательский поставщик в компонент, но он не работает. Этот второй поставщик основан на первом, который я сделал, и который хорошо работает ...Недопустимые провайдеры

Это мой провайдер:

import { Injectable} from "@angular/core"; 
import { Router, Routes } from '@angular/router'; 

import ... // All components needed 

@Injectable() 
export class RoutesHelper { 

    private userRoutes: Routes = [ 
     { path: '' , component: HeaderComponent, outlet: 'header' }, 
     ... 
    ]; 


    constructor(
    private router:Router 
    ) {} 

    public load() { 
     this.router.resetConfig(this.userRoutes); 
    } 
} 

А это мой «QuestionComponent»

import { Component, OnInit } from '@angular/core'; 
import { RoutesHelper } from '../_utils/routes.helper'; 

@Component({ 
    selector: 'questions-list', 
    templateUrl: './app/question/questions.component.html', 
    providers: [RoutesHelper] 
}) 

export class QuestionsComponent implements OnInit { 

    constructor(private routes:RoutesHelper) {} 

    ngOnInit() { 
    this.routes.load(); 
    } 
} 

Но У меня есть эта ошибка: Недействительные провайдеры для «ВопросовКомпонента» - разрешены только экземпляры Провайдера и Типа, получены: [? Undefined?]

Я понятия не имею, почему у меня есть объект «undefined», у меня нет этой ошибки.

Благодарим за помощь.

+0

Вы включили своего провайдера в файлы app.module.ts? –

+0

Да, поставщик включен в приложение; module.ts – Maxime

+0

импортирует ссылку, а также в список провайдеров? –

ответ

0

Импортировать ссылку поставщика в файл app.module.ts.

импорт {RoutesHelper} из 'дать ваш путь';

Включите имя класса поставщика в список поставщиков приложений.module.ts.

провайдеры: [RoutesHelper, // ваши другие провайдеры ...],

В вашем QuestionComponent просто импортировать RoutesHelper ссылку это все. Нет необходимости определять поставщика.

+0

Я попытался, и я получил новую ошибку: 'Не удается разрешить все параметры для QuestionsComponent: (?)'. Есть идеи? – Maxime

0

Ok проблема решена.

, чтобы избежать последней ошибки из-за компонента импорта в поставщике, который импортируется в компонент (поэтому рекурсивный импорт). Я использовал это:

var userRoutes: Routes = [ 
    { path: '' , component: LeftComponent, outlet: 'left' }, 
    { path: '' , component: EmptyComponent, outlet: 'footer' }, 
    { path: '' , component: HeaderComponent, outlet: 'header' } 
]; 

var all = userRoutes.concat(this.router.config); 
this.router.resetConfig(all); 

где userRoutes содержит единственный выход, я хочу, чтобы переопределить и он работает.

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