我使用例如設置角4與通用的NodeJS & expressjs: https://github.com/FrozenPandaz/ng-universal-demoAngular 2+ Universal可以從expressjs傳遞參數(不使用url查詢字符串)?
我一直在試圖從第一個完整的頁面加載數據傳遞到角4最終應用。
該用例將轉換從頭中檢測到的語言以從Angular 4服務器渲染器中吸收它,以便它可以使用正確的語言來翻譯內容。
到目前爲止,我發現的唯一方法是在「/」路徑上使用expressjs的HTTP頭進行語言檢測,並使用HTTP 302重定向到「/ fr」,例如,如果用戶語言是法語。
main.server.ts
app.param('language', function(req: any, res, next, language) {
if(language.length == 2)
{
req.language = language;
next();
} else {
next(new Error('Invalid language found'));
}
});
// Redirect incoming trafic without language in url (302 used so the browser do not seal that redirection if the user decides to change language and reload)
app.get('/', function(req, res) {
res.set('location', baseUrl + '/' + getLanguage(req);
res.status(302).send();
});
routes.ts
export const ROUTES: string[] = [
'/error',
'/:language',
'/:language/download'
];
它的工作原理,因爲我能夠配置角4路由器和檢索目前的路線,但它有點骯髒。
app.module.ts
RouterModule.forRoot([
{ path: '', component: HomeView, pathMatch: 'full'},
{ path: ':language/download', loadChildren: './+lazy/lazy.module#LazyModule'},
{ path: ':language/', redirectTo: ''},
// Catch all if expressjs allowed this url
{ path: '**', component: HomeView }
])
難道還有比網址參數更好的方法來從ExpressJS數據傳遞給採用了棱角分明的通用角4應用程序?
你找到一個解決辦法?我有同樣的問題。 –