更改 Angular 17 中 @Angular/ssr 中响应的状态代码

Moj*_*ili 1 angular-universal angular angular-ssr

Angular 17中引入了SSR的新方法。现在我如何更改Angular组件中快速响应的状态代码?之前我改变了这样的响应:

import { RESPONSE } from '@nguniversal/express-engine/tokens';
import { Response } from 'express';  

constructor(@Optional() @Inject(RESPONSE) private response: Response)


this.response.status(this.statusCode);
Run Code Online (Sandbox Code Playgroud)

这样我就可以更改状态代码。例如,如果我遇到未找到的组件,出于 SEO 原因,我必须将状态代码更改为 404。

Mat*_*ler 5

令牌不再由 导出@angular/ssr

迁移原理图当前所做的就是创建它们:

import { InjectionToken } from '@angular/core';
import { Request, Response } from 'express';
export const REQUEST = new InjectionToken<Request>('REQUEST');
export const RESPONSE = new InjectionToken<Response>('RESPONSE');
Run Code Online (Sandbox Code Playgroud)

您需要提供它们:它可能看起来像这样:

export function app(): express.Express {
    documentFilePath: indexHtml,
    url: `${protocol}://${headers.host}${originalUrl}`,
    publicPath: distFolder,
    providers: [
      { provide: APP_BASE_HREF, useValue: baseUrl },
      { provide: RESPONSE, useValue: res },
      { provide: REQUEST, useValue: req })
   ],
}
Run Code Online (Sandbox Code Playgroud)

这是介绍原理图改进的PR

另请注意,ng serve不使用server.ts(它不使用express。推荐的方法将设置的标记server.ts视为可选。