在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'];