如何在 Angular v19 SSR 中设置提供程序?

问题描述 投票:0回答:1

角度 <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
对象

angular server-side-rendering angular-universal angular19
1个回答
0
投票

在 v19 中,框架会自动为您设置这些令牌。

在您的应用程序中,您将从

'@angular/ssr/tokens'

中提取它们

我有一个工作演示,您可以查看:https://github.com/jeanmeche/ssr-v19

© www.soinside.com 2019 - 2024. All rights reserved.