Определение типа устройства, когда универсальное приложение angular предварительно отображается на сервере. - PullRequest
0 голосов
/ 17 апреля 2020

Я использую библиотеку ngx-device-Detector для определения типа устройства (мобильное, планшетное или настольное). Эта библиотека прекрасно работает в режиме клиента, но не может определить тип устройства, когда универсальное приложение angular предварительно отображается на сервере (после преобразования на сервере работает идеально в режиме клиента).

  1. Я признателен, если кто-нибудь даст мне решение, которое работает для этой библиотеки
  2. В конце концов, если для этой библиотеки нет решения, дайте мне другое решение

Спасибо.

1 Ответ

1 голос
/ 17 апреля 2020

Я быстро взглянул на код и думаю, что вы можете вызвать setDeviceInfo со строкой пользовательского агента, которую вы можете извлечь из заголовков запросов

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']);
    }
}
...