0

目前我正在尝试将某种设置类注入应用程序。

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

@Injectable()
export class Settings {

    private apiUrl: string = '';
    private location: string = '';
    private language: string = 'en';

    constructor() {
        if(localStorage.getItem('apiUrl')) this.apiUrl = localStorage.getItem('apiUrl');
        if(localStorage.getItem('location')) this.location = localStorage.getItem('location');
        if(localStorage.getItem('language')) this.language = localStorage.getItem('language');
    }

    getApiUrl(): string {
        return this.apiUrl;
    }

    getLocation(): string {
        return this.location;
    }

    getLanguage(): string {
        return this.language;
    }

    setApiUrl(apiUrl: string): void {
        this.apiUrl = apiUrl;
        localStorage.setItem('apiUrl', apiUrl);
    }

    setLocation(location: string): void {
        this.location = location;
        localStorage.setItem('location', location);
    }

    setLanguage(language: string): void {
        this.language = language;
        localStorage.setItem('language', language);
    }

}

这是我的设置类...

我接下来尝试做的是通过整个应用程序注入(因为设置将被大量使用)。为此,我认为最好的方法是使用 bootstrap() 函数。所以这是我的引导功能:

bootstrap(AppComponent, [Settings])

我确实将它插入到我想使用 apiUrl 设置的服务的构造函数中:

@Injectable()
export class UserService {
    constructor(private _settings: Settings, private _http:Http) { }
}

但是由于某种原因,在运行应用程序时,我在 UserService 中遇到错误,说构造函数的第一个参数(_settings)未定义..

我一直在尝试不同的事情,但还没有找到可行的解决方案..

4

2 回答 2

1

您是否忘记在 UserService 中导入 Settings 类?

您没有列出 UserService 的顶部...

于 2016-06-23T10:55:28.710 回答
0

好的,所以在尝试了很多事情之后,我发现了问题所在。

我有一个 TS 文件,其中包含我拥有的每个文件夹的所有导出。

我确实有这个核心文件夹,其中包含设置类和一个名为 core.ts 的文件。

当我这样做时:import { Settings } from './core';它不起作用。但是当我这样做时:import { Settings } from './core/settings,它确实有效。

于 2016-06-23T11:33:18.103 回答