在Angular Universal应用程序中从ExpressJS获取vaues

我正在构build一个Angular2通用应用程序,我正在整合ng2-translate 。

服务器端我需要知道用户的语言,我可以通过request.acceptsLanguages() ( 见文档 )从ExpressJS获得。

我正确地得到这些值在server.ts像这样:

 function ngApp(req: any, res: any) { let supportedLangs = req.acceptsLanguages(); console.log('supportedLangs', supportedLangs); res.render('index', { req, res, ngModule: AppModule, preboot: false, baseUrl: '/', requestUrl: req.originalUrl, originUrl: req.hostname }); } 

然后我不知道如何通过他们,或访问他们,在我的app.node.module.ts我为服务器设置ng2-translate

有没有办法从Angular Universal应用程序(服务器端)访问这些值? 怎么样?

对于那些感兴趣的,解决scheme是使用Zone ,当这样做时,有一些事情要注意。

首先,要确保TypeScriptparsing器不会中断,还需要在使用Zone的文件顶部声明:

 declare var Zone: any; 

或者我想你可能会安装所有的types,但我没有testing过。

然后,在只有节点的模块中的任何地方,你都可以通过这样的方式获得传递给server.ts文件中res.render的参数:

 let req = Zone.current.get('req'); 

最后,你可以访问在server.ts传递给req任何属性,例如:

 req.headers['user-agent'];