2016-10-15 4 views
1

Я создал этот Глобальный класс конфигурации, это код:Объявите класс в корневом компоненте и использовать в другом компоненте

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

@Injectable() 
export class ConfigEnvironment { 

    private development: String; 
    private production: String; 

    private ENV: String; 

    private version: String; 

    constructor(){ 
     this.development = "development"; 
     this.production = "production"; 

     this.ENV = this.development; 

     this.version = "v1" 
    } 
    url(){ 

     var environment: any = this.ENV; 

     var endPoint = { 
      development: "http://localhost/meetup-api/"+this.version+"/", 
      production: "https://localhost.production/meetup-api/"+this.version+"/" 
     }; 

     return endPoint[environment]; 
    } 
} 

Объявите класс в app.module.ts внутри провайдеров, как это:

providers: [ConfigEnvironment], 

Но когда я доступ к классу ConfigEnvironment в одном из моего компонента, используя этот код:

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

@Component({ 
    selector: 'app-login', 
    templateUrl: './login.component.html', 
    styleUrls: ['./login.component.scss'] 
}) 
export class LoginComponent implements OnInit { 

    constructor(private router: Router) { } 
    login() { 
     console.log(ConfigEnvironment.url()) 
     this.router.navigate(['/']); 
    } 
    ngOnInit() { 
    } 

} 

Это дает мне ошибку «Не могу найти имя« ConfigEnvironment ».

Какая проблема в моем коде?

+0

Вы должны показать класс, где вы используете ConfigEnvironmentService – quindimildev

+0

Editted мои сообщения –

ответ

2

Вам необходимо ввести его в свой компонент.

constructor(private router: Router, private configEnvironment : ConfigEnvironment) { } 

Также не забудьте его импортировать.

import { ConfigEnvironment } from 'path/to/service'; 
+0

Есть ли способ импортировать его один раз, чтобы весь мой компонент мог использовать класс? –

+0

Вы уже объявили его глобальным сервисом, но вам придется вводить его каждый раз, когда вы хотите его использовать. Насколько я знаю, нет другого пути. – Sefa

+0

Спасибо sefa, что он работает –

1

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

+0

Моя цель состоит в том, чтобы объявить его только один раз, так что все мои компонента можно использовать класс –

+0

@sefa ответил правильно. Это способ, как это сделать – quindimildev

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