角度の2つのアプリケーションでは、Injectable
はすべてSingleton
です。メソッド(基本的に初期化、チェックAPP_INITIALIZER
)で値を取得し、オブジェクトのプロパティに格納し、サービスを注入するあらゆる場所で取得することができます。次に、構成サービスの簡単な例を示します。あなたのProviders
配列
ConfigService,
{
provide: APP_INITIALIZER,
useFactory: (config: ConfigService) =>() => config.load(),
deps: [ConfigService],
multi: true
},
で
config.service.tsあなたApp.module.tsで
@Injectable()
export class ConfigService {
private _config: Object;
private http: Http;
constructor(private injector: Injector) {
}
get(optionName: any) {
return this._config[optionName];
}
load() {
this.http = this.injector.get(Http);
let observable = this.http.get('dist/config/configuration.json')
.map(res => res.json());
observable.subscribe(config => this._config = config);
return observable.toPromise();
}
}
次に、あなただけのすべてのコンポーネントにあなたのサービスを注入することができますし、直接変数にアクセスconfigService.get( 'yourVariable')