Хотя я бы не рекомендовал такой подход, если вам нужен объект navigator
в Angular Universal, вы можете проверить проект Domino .
Затем в вашем server.ts
файл, вы бы сделали что-то вроде этого:
const template = readFileSync(join(DIST_FOLDER, 'index.html')).toString();
const win = domino.createWindow(template);
global['window'] = win;
global['Node'] = win.Node;
global['navigator'] = win.navigator;
global['Event'] = win.Event;
global['Event']['prototype'] = win.Event.prototype;
global['document'] = win.document;
А в обработчике вы можете сделать:
app.engine('html', (_, options, callback) => {
renderModuleFactory(AppServerModuleNgFactory, {
// Our index.html
document: template,
url: options.req.url,
// DI so that we can get lazy-loading to work differently (since we need it to just instantly render it)
extraProviders: [
provideModuleMap(LAZY_MODULE_MAP)
]
}).then(html => {
callback(null, html);
});
});
См .: https://mdbootstrap.com/angular/angular-universal/