角度 <19 I used such code to specify the providers:
// All regular routes use the Angular engine
server.get('**', (req, res, next) => {
const { protocol, originalUrl, baseUrl, headers } = req;
commonEngine
.render({
bootstrap,
documentFilePath: indexHtml,
url: `${protocol}://${headers.host}${originalUrl}`,
publicPath: distFolder,
providers: [
{ provide: APP_BASE_HREF, useValue: baseUrl },
{ provide: RESPONSE, useValue: res },
{ provide: REQUEST, useValue: req },
],
})
.then((html) => res.send(html))
.catch((err) => next(err));
});
但是在 Angular 19 中还有另一种结构:
app.use('/**', (req, res, next) => {
angularApp
.handle(req)
.then((response) =>
response ? writeResponseToNodeResponse(response, res) : next(),
)
.catch(next);
});
我尝试在
handle()
方法的第二个参数中添加providers数组,但它对我不起作用。
我需要为
REQUEST
令牌设置提供者,它应该是 req
对象
在 v19 中,框架会自动为您设置这些令牌。
在您的应用程序中,您将从
'@angular/ssr/tokens'
中提取它们
我有一个工作演示,您可以查看:https://github.com/jeanmeche/ssr-v19