2017-08-18 18 views
0

私はこのようなクラスを追加しました。それはデータブツを認識しませんAngularで設定を保存するためのグローバルクラスを設計するには?

export class Settings{ 
    public data: string = "blopp"; 
} 

私がデータにアクセスしようとすると、私がその値を代入しようとしているフィールドがクラスに設定を見ているようだ自体がけど

他のコンポーネントの設定を提供するためにクラスを再設計するにはどうすればよいですか?

私は約@Outputデコレータを読んだことがありますが、値にバインドしないので、正しいアプローチではないようです。私はクラスがそれを消費するはずのコンポーネントでインポートされ、認識されていることを確認しました。また、対応するエクスポージャーを試しましたが、設定でクラス内の関数を使用しました - 同じ、失敗した結果。

+0

詳細については、この[**媒体**](https://medium.com/hasan.hameed/reading-configuration-files-in-angular-2-9d18b7a6aa4)の記事をお読みください。 – Aravind

+0

ちょうど組み込みの '環境'を使用してください –

答えて

1

angle-cliを使用していて、このクラス環境固有の設定に格納する場合は、すでにこれをサポートしています。

environment.tsに設定します。たとえば:

export const environment = { 
    production: false, 
    someSetting: 'foo', 
}; 

そして、それはアプリ内のどこから消費することができます。

import { environment } from "../environments/environment"; //fix according to your project structure 

@Injectable() 
export class SampleService { 
    private foo = environment.someSetting; 
} 

Hereあなたはより多くの環境を追加して、特定の環境設定でプロジェクトあなたを構築する方法についての詳細情報を見つけることができます。

0

グローバル設定を保存するための最良の方法は、サービスを使用することです。 https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/

そして、ここでplunker:https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview

また、@OutputデコレータはAのみの間の通信のためである私は、ここでこのことについてブログ記事を持っている

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

@Injectable() 
export class DataService { 
    serviceData: string; 
} 

:そのためのコードは次のようになります子コンポーネントと、その子コンポーネントが親内にネストされている親コンポーネントとを含む。

+0

私はそれが私に新しいものです(角度は一般的です)。私が答えを待っている間、私はTSにキーワード*静的*があることを発見しました。代わりにそれを使用しました。私の質問に構文をサポートする静的にアクセス可能なフィールドを与えました。私はあなたがそれについて何をしているのだろうか(あなたが提案した注射可能なサービスと比較して)。 –

+1

注射可能なサービスはここでは絶対に必要ありません。静的変数を持つクラスは良いオプションです。 – Faisal

+1

@Faisalそれは私も同様です。しかし、確かに、私は彼が問題を探検したように、注射可能なサービスを作り、それを使用することは業界標準のビットであるようです。他の場所では**このようなアプローチは**あらゆる状況では最適ではありませんが、AngularJsの支配的時代からの成果物であり、開発者は静的*。どう思いますか? –

関連する問題