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) { }
}

しかし、何らかの理由でアプリケーションを実行すると、コンストラクターの最初のパラメーター (_settings) が未定義であるというエラーが UserService に表示されました..

私はさまざまなことを試してきましたが、まだ有効な解決策を見つけていません..

4

2 に答える 2

0

わかりましたので、多くのことを試した後、問題が何であるかがわかりました。

私が持っている各フォルダーのすべてのエクスポートを含むTSファイルがありました..

このコア フォルダーには、Settings クラスと core.ts というファイルが含まれています。

私がやったとき:うまくいきimport { Settings } from './core';ませんでした。しかし、私がするとき: import { Settings } from './core/settings、それはうまくいきます。

于 2016-06-23T11:33:18.103 に答える