加载存储在.json文件中的值

时间:2016-07-05 14:48:54

标签: json angular

我想从.json文件中读取服务的配置值。

这是我到目前为止所拥有的。最终配置值将进入日志,但不会在执行其余功能之前。

getService()
{
    var service = new Service();        

    this.http.get('./config.json')
    .map(res => res.json())
    .subscribe(data => this.config = data,
    err => console.log(err) );

    service.ValueA = this.config.ValueA;

    return service;
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以在应用程序启动时利用APP_INITIALIZER服务预加载您的服务。应用程序将等待返回的promise在实际启动之前得到解决。

以下是一个示例:

bootstrap(AppComponent, [
  { provide: APP_INITIALIZER,
    useFactory: (service:Service) => () => service.init(),
    deps:[Service, HTTP_PROVIDERS], multi: true
  }
]);

load方法需要类似的东西:

@Injectable()
export class Service {
  ValueA:string;

  constructor(private http:Http) {
  }

  init() {
    var promise = this.http.get('config.json').map(res => res.json()).toPromise();
    promise.then(config => this.ValueA = config.ValueA);
    return promise;
  }
}

这样做,您将能够注入Service服务,并直接使用ValueA等配置属性。

以下是组件中的示例:

@Component({
  (...)
  providers: [ Service ]
})
export class SomeComponent {
  constructor(private service:Service) {
    console.log(`[config] ValueA = ${service.ValueA}`);
  }
}