Angular 4 - 然后返回null

时间:2017-05-28 00:25:49

标签: angular

我尝试从promise中获取一些数据,但没有返回任何内容。有人可以帮我吗?怎么了?

return test zone_symbol__state:null __zone_symbol__value:阵列(0)__原:对象



load(): Promise < any > {
  const test = this.http
    .get(this.translationPath)
    .toPromise()
    .then(
      this.createTranslationProviders
    ).catch((err: any) => {
      Promise.resolve();
      console.log('resolve' + err)
    });
  return test; // this is always NULL 
}



private createTranslationProviders(response: Response) {
  let translationProvider: any;
  translationProvider = [
    //  { provide: TRANSLATIONS, useValue: response },
    //  { provide: TRANSLATIONS_FORMAT, useValue: 'xlf' },
    {
      provide: LOCALE_ID,
      useValue: 'de_DE'
    }
  ];
  return translationProvider;
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您的TranslationService会在承诺中返回提供商列表,但您不会将此提供商添加到模块中。您可以在不使用APP_INITIALIZER的情况下查看ng-conf翻译回购的方式,但是使用提供程序的加载列表,然后使用它们的boostraping模块:

https://github.com/ocombe/i18n-demo/blob/c3a063bb51d097eee14f889bce48b4bb9df9d1da/src/main.ts#L12

getTranslationProviders(environment.production).then((providers: 
  CompilerOptions[]) => {
   const options = { providers };
   platformBrowserDynamic().bootstrapModule(AppModule, options);
});

此外,请注意它目前无法与AOT合作。您可能会发现以下链接有用:

[i18n]为v4及以后的计划 -  https://github.com/angular/angular/issues/16477

翻译失败(ng-conf 2017) - https://www.youtube.com/watch?v=dihyu1a2bPc