可变的未定义可观察打字稿

时间:2018-08-28 12:26:27

标签: angular typescript interface

我在这里遇到一个问题,我做了点事,但是我想知道这是否是个好方法...

我有一个界面:

export interface ContexteEnvironnement {
  langue: string;
  urlPing: string;
  urlFinSession: string;
  urlTimeout: string;
  urlRetour: string;
  urlBaseEpv: string;
}

我有服务:

contexteEnvironnement: ContexteEnvironnement;

getDataInitialisation(): Observable<ContexteEnvironnement> {
  return this.http.get<ContexteEnvironnement>(configUrl, headerGET);
}

我有我要获取数据的应用程序组件:

ngOnInit() {
  this.initialiserProprietes();
}

initialiserProprietes(): void {
  this._serviceConfigInitiale.getDataInitialisation().subscribe(data => {
    this._serviceConfigInitiale.dataInitialisation = data;
   this._langueService.setLangueCourante(data.contexteEnvironnement.langue);
  });
}

我有一个错误说:

  

错误TypeError:无法读取未定义的属性'urlBaseEpv'

所以我决定在服务中初始化变量:

contexteEnvironnement: ContexteEnvironnement = {
  langue: '',
  urlPing: '',
  urlFinSession: '',
  urlTimeout: '',
  urlRetour: '',
  urlBaseEpv: ''
};

一切正常。有更好的方法吗?

非常感谢您的建议!

1 个答案:

答案 0 :(得分:1)

使用这样的类:

export class ContexteEnvironnement {
    langue = '';
    urlPing = '';
    urlFinSession = '';
    urlTimeout = '';
    urlRetour = '';
    urlBaseEpv = '';
}

,然后将其写入您的服务或其他任何地方:

contexteEnvironnement = new ContexteEnvironnement();