2017-05-28 82 views
0

我尝试从promise中获取一些数据,但没有返回。有人可以帮助我吗?怎么了??Angular 4 - 然后返回null

回归测试zone_symbol__state:空 __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; 
 
}

+0

什么是你在做什么?你为什么要兑现承诺? – Aravind

+0

'.then()'不返回一个Promise。它实际上没有任何回报。 –

+1

可能重复[为什么我的承诺返回undefined?](https://stackoverflow.com/questions/42577647/why-is-my-promise-returning-undefined) –

回答

0

你TranslationService返回一个承诺提供者名单,但你不加这个提供者给模块。你可以看看NG-conf的翻译回购是怎样做的,而无需使用APP_INITIALIZER但与供应商的货清单和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合作。您可能会发现下面的链接会有所帮助:

[国际化]计划v4和超越 - https://github.com/angular/angular/issues/16477

迷失东京(NG-conf的2017) - https://www.youtube.com/watch?v=dihyu1a2bPc

+0

感谢Julia,但我没有使用system.js来读取文件。我想知道,如何使用角度http请求呢?如何将它导入模块导出函数? – KRav

+0

这个回购使用angular-cli也不使用systemJS,但webpack。你为什么想到systemJS?如果你考虑System.import,它与SystemJS无关,但这是基于标准加载异步内容的webpack函数。 –

+0

是的,“System.import”的原因 - 感谢将光线带入黑暗。 “System.import”直到现在还没有工作。系统..找不到...或其他东西。我将检查它为什么不起作用...我是否需要将“系统”包含在某处? – KRav