Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在服务器上预渲染角度通用应用程序时检测设备类型_Angular_Angular Universal_Device Detection - Fatal编程技术网

Angular 在服务器上预渲染角度通用应用程序时检测设备类型

Angular 在服务器上预渲染角度通用应用程序时检测设备类型,angular,angular-universal,device-detection,Angular,Angular Universal,Device Detection,我正在使用库检测设备类型(移动设备、平板电脑或台式机)。 此库在客户端模式下工作正常,但在服务器上预渲染angular universal应用程序时无法检测设备类型(在服务器上预渲染后,在客户端模式下工作正常) 如果有人给我一个适合这个库的解决方案,我将不胜感激 最后,如果这个库没有任何解决方案,请给我另一个解决方案 谢谢。我快速查看了代码,我认为您可以使用用户代理字符串调用setDeviceInfo,您可以从请求头中检索该字符串 应用程序模块.ts import {Request} from

我正在使用库检测设备类型(移动设备、平板电脑或台式机)。 此库在客户端模式下工作正常,但在服务器上预渲染angular universal应用程序时无法检测设备类型(在服务器上预渲染后,在客户端模式下工作正常)

  • 如果有人给我一个适合这个库的解决方案,我将不胜感激
  • 最后,如果这个库没有任何解决方案,请给我另一个解决方案

  • 谢谢。

    我快速查看了代码,我认为您可以使用用户代理字符串调用
    setDeviceInfo
    ,您可以从请求头中检索该字符串

    应用程序模块.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']);
        }
    }
    

    你有错误吗?没有,没有错误。但是在服务器上预呈现角度通用应用程序时无法检测设备类型您使用的是哪个版本?根据github的问题,这应该从v1.4.1开始,使用1.4.2版。在版本1.4.1中,作者只添加了“isPlatformBrowser”条件以仅处理错误。它还没有在服务器上进行预渲染以检测设备类型。你是对的,我没有检查代码。也许用这样的图书馆?