在服务器上预呈现 angular 通用应用程序时检测设备类型
Detecting the device type when an angular universal app pre-rendered on the server
我正在使用 ngx-device-detector 库来检测设备类型(手机、平板电脑或台式机)。
该库在客户端模式下完美运行,但当 angular 通用应用程序在服务器上预渲染时无法检测设备类型(在服务器上预渲染后,在客户端模式下完美运行)。
- 如果有人给我一个适用于该库的解决方案,我将不胜感激
- 最后,如果这个库没有任何解决方案,请给我另一个解决方案
谢谢。
我快速查看了代码,我认为您可以调用 setDeviceInfo
使用用户代理字符串,您可以从请求 headers
中检索该字符串
app.module.ts
import {Request} from 'express';
import {REQUEST} from '@nguniversal/express-engine/tokens';
constructor(@Inject(PLATFORM_ID) private platformId,
@Optional() @Inject(REQUEST) protected request: Request,
private deviceService: DeviceDetectorService)
{
if(!isPlatformBrowser(platformId))
{
this.deviceService.setDeviceInfo(request.headers['user-agent']);
}
}
我正在使用 ngx-device-detector 库来检测设备类型(手机、平板电脑或台式机)。 该库在客户端模式下完美运行,但当 angular 通用应用程序在服务器上预渲染时无法检测设备类型(在服务器上预渲染后,在客户端模式下完美运行)。
- 如果有人给我一个适用于该库的解决方案,我将不胜感激
- 最后,如果这个库没有任何解决方案,请给我另一个解决方案
谢谢。
我快速查看了代码,我认为您可以调用 setDeviceInfo
使用用户代理字符串,您可以从请求 headers
app.module.ts
import {Request} from 'express';
import {REQUEST} from '@nguniversal/express-engine/tokens';
constructor(@Inject(PLATFORM_ID) private platformId,
@Optional() @Inject(REQUEST) protected request: Request,
private deviceService: DeviceDetectorService)
{
if(!isPlatformBrowser(platformId))
{
this.deviceService.setDeviceInfo(request.headers['user-agent']);
}
}