我现有的 Electron Angular 应用程序运行良好。 我想在单击按钮时创建一个新窗口,并让该窗口使用给定的 Angular 组件作为其初始 UI 内容。
所以我制作了一个新组件,如下所示:
ng 生成组件 TrivialComponent
现在,在我的电子应用程序中,我确保在 app.module.ts 顶部我有:
import { TrivialComponent } from './trivial.component';
并且它被添加到声明中,如下所示:
@NgModule({
declarations: [
AppComponent,
TrivialComponent,
现在,在我的按钮单击事件上添加:
var w = new BrowserWindow({
title: "My Title",
minWidth: 800,
minHeight: 600,
frame: true,
resizable: true,
transparent: false,
closable: true,
show: false,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
allowRunningInsecureContent: true,
enableRemoteModule: true
} as Electron.WebPreferences
});
w.show();
w.loadFile("dist/index2.html");
index2.html 的正文是:
<body class="igx-typography">
<app-trivial></app-trivial>
</body>
当我运行这个时,我得到一个新的空窗口,但内容是空白的,而不是我的新组件的 html,即:
<p>Trivial component works!</p>
有人知道我错过了什么吗?
您可以尝试创建到新组件的标准路由,然后在显示之前尝试此操作:
w.once('ready-to-show', () => {
if (urlToOpen) {
win.webContents.send('openUrl', urlToOpen);
if (win.isMinimized()) win.restore()
win.focus()
}
});
其中
urlToOpen
是带有组件路由的 URL。
但准确地说,当用户通过导航到 ourapp://urlToOpen 从浏览器打开电子应用程序时,我们使用此解决方案。
我现在不记得 urlToOpen 在代码中是什么样子的。它是否有 ourapp
前缀。如果它以这种方式导航可能是一个解决方法。