2016-12-13 8 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(); 
    } 
} 

그러나입니다 이 오류가 있습니다 : "QuestionsComponent"에 대한 잘못된 공급자 - Provider 및 Type의 인스턴스 만 허용됩니다. [? undefined?]

왜 "정의되지 않은"객체를 가지고 있지 않은지 알지 못합니다.이 오류가 없습니다.

도움 주셔서 감사합니다.

+0

app.module.ts 파일에 제공 업체를 포함 시켰습니까? –

+0

예, 제공 업체는 앱에 포함되어 있으며 공급자 목록에 포함 된 것과 마찬가지로 링크를 가져 오는 – Maxime

+0

이 포함되어 있습니까? –

답변

0

app.module.ts 파일에서 공급자 링크를 가져옵니다.

'경로 지정'에서 가져 오기 {RoutesHelper};

app.module.ts 공급자 목록에 공급자 클래스 이름을 포함하십시오.

제공 : [RoutesHelper, // 다른 업체 ...], 단지 그것 뿐이다 RoutesHelper 링크를 가져 당신의 QuestionComponent에서

. 공급자를 정의 할 필요가 없습니다.

+0

나는 시도하고 새로운 오류 : 'QuestionsComponent에 대한 모든 매개 변수를 해결할 수 없습니다 : (?)'. 어떤 생각? – Maxime

0

문제가 해결되었습니다.

구성 요소에서 가져온 공급자의 가져 오기 구성 요소로 인한 마지막 오류 (너무 재귀 한 가져 오기)를 피하십시오. 나는 이것을 사용 : userRoutes 내가 무시하려면 및 작동에만 콘센트를 포함

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); 

.