открыть новое окно в электронном виде без обновления angular сервисных данных - PullRequest
0 голосов
/ 18 апреля 2020

Я хочу открыть новое окно в моем электронном приложении + angular. У меня есть служба auth.service.ts, которая обрабатывает мою аутентификацию в приложении. У меня есть функция, которая запускает открытие нового электронного окна, чтобы показать какую-то другую часть приложения. Проблема, с которой я сталкиваюсь, заключается в том, что когда открывается новое окно, оно перенаправляет меня обратно на страницу входа. Как я могу решить эту проблему?

Это мой main.js файл

const { app, BrowserWindow, Menu, ipcMain } = require('electron')
const url = 'http://localhost:4200'

let win, printWin

function createWindow() {
    win = new BrowserWindow({
        width: 1440,
        height: 720,
        backgroundColor: 'white',
        resizable: false,
        maximizable: false,
        icon: `file://${__dirname}/src/favicon.ico`,
        webPreferences: {
            preload: `${__dirname}/preload.js`,
            print: true
        }
    })

    win.loadURL(url)

    win.on('closed', function () {
        win = null
    })

}

function openPrintWindow(arg) {
    printWin = new BrowserWindow({ parent: win, modal: true, show: false })

    printWin.loadURL(`${url}/#/${arg}`)
    printWin.once('ready-to-show', () => printWin.show())
}

function readyToPrint() {
    win.webContents.print({
        printBackground: true,
        silent: true
    }, function () {
        printWin = null
    })
}

ipcMain.on('print', (event, arg) => openPrintWindow(arg))
ipcMain.on('readyToPrint', (event, arg) => readyToPrint(arg))
app.on('ready', createWindow)

Обратите внимание, что я использую localhost для отображения приложения из-за определенных ограничений Laravel Sanctum. И я использую здесь стратегию ха sh.

1 Ответ

2 голосов
/ 18 апреля 2020

Важная вещь, которую нужно понять об электроне, заключается в том, что каждое окно во многих отношениях ведет себя подобно вкладке браузера. В вашем случае в новом окне angular будет инициализировано с нуля, что означает новый экземпляр вашей службы аутентификации, который ничего не знает о другом окне, в которое пользователь уже вошел.

Существует несколько способов передачи информации для входа в новое открытое окно с локального хранилища на IP C связь.

В качестве опции вы можете сохранить токен доступа в локальном хранилище и прочитать его оттуда при запуске angular. В этом случае информация для входа будет доступна для всех windows в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...