Electron 应用程序与 Angular 2 重新加载问题[重复]

2024-07-04

我正在使用 Angular 2 开发 Electron 桌面应用程序。一切都启动得很好并且按预期工作,但是当我重新加载应用程序时它失败了。

看来是路由的问题。如果没有路由,应用程序将很好地重新加载并显示所做的更改,但如果有路由,它会返回一个空白的 html 页面(甚至整个主 index.html 完全没有任何资源)。

有没有人遇到过这个问题,或者也许了解该过程失败的地方以及如何修复它?


我已经设法解决 Angular2 with Electron 刷新问题。托斯顿·汉斯的道具帮助我们确定解决方案 https://github.com/ThorstenHans/electron-ts-ng2使用最新版本的 Electron 和 Angular2。请注意,我们一直在 Electron 中进行 Angular2 英雄之旅演练。

在完成《英雄之旅》的大部分路由部分后,我们很快发现刷新电子浏览器窗口会导致应用程序无法正确刷新当前页面。

我们正确地假设这与 Angular2 和 Electron 处理路由的方式有关。我们最终假设 Angular2 需要支持 hashbang URL,或者 Electron 需要支持 HTML5 URL 路由。似乎后者在 Electron 中无法立即实现,因此我们求助于 Angular2,它为我们提供了一种将 hashbang 放回 URL 路径的方法。

下面是我们用来让路由在 Electron 中工作的代码。

应用程序组件.ts

import { Component }       from 'angular2/core';
import { HeroService }     from './hero.service';
import { HeroesComponent } from './heroes.component';
import { DashboardComponent } from './dashboard.component';
import { RouteConfig, ROUTER_DIRECTIVES } from 
'angular2/router';
import {Location} from 'angular2/src/platform/browser/location/location'

@RouteConfig([
  {
      path: '/heroes',
      name: 'Heroes',
      component: HeroesComponent
  },
  {
      path: '/dashboard',
      name: 'Dashboard',
      component: DashboardComponent,
      useAsDefault: true
  }
])

@Component({
    selector: 'my-app',
    template: `
    <h1>{{title}}</h1>
    <nav>
        <a [routerLink]="['Dashboard']">Dashboard</a>
        <a [routerLink]="['Heroes']">Heroes</a>
    </nav>
    <router-outlet></router-outlet>
    `,
    directives: [ROUTER_DIRECTIVES],
    providers: [
        HeroService
        ]
})

export class AppComponent {    
    title = 'Tour of Heroes';
}

Note we removed从“提供者”列表中删除 ROUTER_PROVIDERS(仅留下 HeroService),并将其从文件开头的导入语句中删除。我们还添加了 Location 的导入语句。这里的想法是让 Angular2 使用 hashbang URL。

接下来是 app.ts 文件。

///<reference path="../node_modules/angular2/typings/browser.d.ts"/>

import {provide} from 'angular2/core';  

import {ROUTER_PROVIDERS} from 'angular2/router';

import {LocationStrategy} from      'angular2/src/platform/browser/location/location_strategy';

import {HashLocationStrategy} from      'angular2/src/platform/browser/location/hash_location_strategy';

import { bootstrap }    from 'angular2/platform/browser';

import { AppComponent } from './app.component';

bootstrap(AppComponent, [ROUTER_PROVIDERS, provide(LocationStrategy,
    { useClass: HashLocationStrategy })]);

这需要一些挖掘才能找到包含导出的正确 Angular2 文件夹,但它们在那里非常荣耀。因此,基本上,我们告诉 Angular2 在解析 URL 时使用“HashLocationStrategy”。然后,我们能够刷新 Electron 中的应用程序浏览器窗口,我们的页面也按预期刷新。Note你的index.html文件确实not need a <base href>使用此方法时标记。我不清楚细节,但我假设 HashLocationStrategy 发生的引导会处理这个问题。希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Electron 应用程序与 Angular 2 重新加载问题[重复] 的相关文章

  • Angular 4 多重防护 - 执行序列

    我的应用程序中有 2 个守卫 AuthGuard 和 AccessGuard 顾名思义 AuthGuard 保护所有页面 并将会话对象存储在 GlobalService 中 而 AccessGuard 依赖于 AuthGuard 存储在 G
  • Angular 5随着路线的改变而改变元素

    我有一个包含具有某些属性的用户的数组 当用户更改路由时 它应该只显示那些在 url 中放置了某些特定属性的人 现在我只能显示所有地方的所有用户 并且组件似乎没有改变id被改变了 我试过这个 ngOnInit void const id th
  • Angular - 如何取消从“后退”按钮触发的路线更改?

    在我的应用程序中 我想在用户点击后退按钮时显示提示消息框或模式 我可以使用 onPopState 事件 但它不会阻止用户向后导航 到目前为止 我有这个 window onpopstate event gt event preventDefa
  • Angular 5:表内的动态表单验证

    我正在尝试使用表单组验证表内的输入字段 但无法实现相同的目标 我使用 ngFor 来迭代数据 因为我必须在表的第一列中显示该数据 而其他列只是输入文本字段 我必须在其中添加表单验证 因此 我添加了该字段的唯一表单控件名称的索引 HTML代码
  • Bootstrap 样式不适用于 Angular2 组件

    Bootstrap 样式不适用于 Angular2 组件 在以下 Angular2 组件中 它不能作为 ui 中的引导流体容器工作 如果我在带有 div 元素的组件内使用 container fluid 则会在作品中出现 例如 不工作 Co
  • 从 canActivate 方法返回 Observable 并在 false 时重定向

    我一直在寻找解决方案但没有运气 如果用户获得授权 我需要调用服务器 并且我需要 canActivate 方法来等待该调用的结果 但我似乎无法将各个部分拼凑在一起 下面是我的代码 我的问题在代码的注释中 canActivate route A
  • Angular 2 中的动态路由加载失败。 (测试版)

    我想从以 JSON 格式获取的服务动态加载 RouteConfig 的路由 path about name About component AboutComponent path contact name Contact component
  • 构建 Angular 进行生产,无需安装 devDependency

    我目前正在尝试创建一个 Docker 容器来构建我的生产 Angular 应用程序 我正在使用 npm 我只想安装依赖项 所以没有 devDependency 所以我想这样做 npm install only prod ng build p
  • 将 MathJax 集成到 SystemJS 构建中

    I use SystemJS建立一个Angular 2应用程序 我想开始使用MathJax在一个组件中 我安装了 npm install save dev mathjax npm install save types mathjax Mat
  • 角度自动完成对象

    我正在努力了解如何在使用对象时使用角度材质自动完成 我基本上遵循 Angular 文档 只是用选项对象替换了选项数组 但我不确定如何让它工作 介意来这里看看吗 如果问题在其他地方有很多答案 我会删除该问题 这是我的 html 和 ts 组件
  • Jasmine 测试中 AfterViewInit 的生命周期钩子

    我对与 Jasmine 测试相关的生命周期挂钩感到困惑 LifeCycle Angular 文档没有提到测试https angular io guide lifecycle hooks https angular io guide life
  • 类型“””上不存在属性“错误”|承诺<任何>'

    我正在尝试按照 Angular 向服务添加一些错误处理guide https angular io docs ts latest guide server communication html error handling 相关片段 pri
  • 在 Angular 中创建可重用的按钮组件

    我正在尝试在 Angular 5 中创建一个组件 该组件将包含一个可重用的按钮模板 在我的应用程序按钮的不同部分将调用不同的函数 因此我希望能够告诉按钮的给定实例要调用什么函数 我知道我可以在需要的地方为按钮创建一个 HTML 标签 但我希
  • 如何在 Typescript 类中创建 Angular 5 HttpClient 实例

    我正在编写一个包含 httpClient 的基类 它用于进行 REST api 调用 如果在构造函数中定义 则 httpClient 变量设置正确 但在私有变量中未定义 这是我的示例代码 Injectable export class My
  • 如何在 Angular Material 应用程序的 div 元素中设置背景图像?

    我知道有人问过这个问题 但没有一个解决方案有效 我有以下 html 如果使用注释的 img 元素 我可以显示图像 img src assets utgmap jpg 并注释掉以下 div 元素 但是我想要 div 的背景图像 但它不起作用
  • Angular 5 - 如何重定向到具有特定标头的外部 URL?

    这就是我试图用 Angular 实现的目标 this headers this http get urlApi subscribe data gt go to url with specific headers err gt console
  • Angular2 2.4.3 和响应式网页设计:使用媒体查询似乎不起作用

    当将 Angular2 2 4 3 与 CSS3 媒体查询功能结合使用时 直接嵌入到 Angular2 组件中 参见下面的示例 or 使用 styles css 在 index html 中集中引用 这两种情况下的 html 组件都没有根据
  • Electron 应用程序与 Angular 2 重新加载问题[重复]

    这个问题在这里已经有答案了 我正在使用 Angular 2 开发 Electron 桌面应用程序 一切都启动得很好并且按预期工作 但是当我重新加载应用程序时它失败了 看来是路由的问题 如果没有路由 应用程序将很好地重新加载并显示所做的更改
  • 无法在角度2中实现PUT请求,出现错误“不允许空值”

    我已经在我的应用程序中实现了 GET 请求 并且能够在账户组件 当我单击中的特定行时DataGrid 我得到一个POPUP我可以在其中访问 row data 的窗口 并使用下拉菜单可以更新 DataGrid 但是 当我为下拉列表选择所需的值
  • 如何在角度4中使用addHTML

    我试图在 Angular 中使用 jspdf 库的 addHTML 函数 并且已经安装了 html2Canvas 但出现错误 这是我的 demo component ts 文件 import Component OnInit ViewChi

随机推荐

  • 以编程方式将项目添加到相对布局

    我一直在到处寻找这个问题的答案 我是 Android 新手 尝试通过 java 而不是 xml 以编程方式将项目添加到相对布局 我创建了一个测试类来尝试一下 但项目不断堆叠而不是正确格式化 我现在只想将一个 TextView 放在另一个下面
  • OpenCL 中的重叠传输和设备计算

    我是 OpenCL 的初学者 我很难理解某些东西 我想改进主机和设备之间的图像传输 我制定了一个计划来更好地了解我 顶部 我现在拥有的 下图 我想要的 HtD 主机到设备 和DtH 设备到主机 是内存传输 K1 和 K2 是内核 我考虑过使
  • 使用 v8::Locker 的正确方法是什么?为什么必须使用它?

    我正在尝试使用 NDK 将 v8 嵌入到 Android 应用程序中 我有一个看起来像这样的 JNI 模块 未显示 JNI 映射代码 include
  • 我可以显示托管在 bitbucket 上的 Ipython 笔记本吗?

    我有一个非常简单的笔记本 托管在 github 和 bitbucket 上 这github 网址 https github com thomas haslwanter statsintro blob master ipynb demo ip
  • 具有 EditText 材质设计的工具栏

    我正在尝试制作带有 EditText 的工具栏 如下所示 现在我可以做一些类似的事情 但只能使用静态标题 有什么想法可以开始吗 我已经这样做了 如下所示 有Toolbar as AppBar aka ActionBar 位于顶部 其下方的第
  • Numpy,沿数组维度应用函数列表

    我有一个类型的函数列表 func list lambda x function1 input lambda x function2 input lambda x function3 input lambda x x 和形状为 4 200 2
  • 在 MacOS X 上安装 Node.js、nvm 和 npm 的推荐方法是什么?

    我正在尝试使用Homebrew https brew sh越多越好 推荐的安装方式是什么Node js https nodejs org en nvm https github com nvm sh nvm and npm https ww
  • 如何使用 Linq 对通用集合进行分页?

    我有一个 System Generic Collections List Of MyCustomClass 类型对象 给定整数变量 pagesize 和 pagenumber 如何仅查询 MyCustomClass 对象的任何单个页面 如果
  • 如何将 char 指针转换为 int 指针

    我想投射一个指针pc它将 char 指向一个点pi它指向 int char pc int pi pi int pc compiler complaint about old style cast pi static cast
  • KSQL 是否支持 Kafka 流处理保证?

    我想知道KSQL是否支持https docs confluence io current streams concepts html processing guarantees https docs confluent io current
  • 为唯一字段显示 Django 错误消息

    我想更改当重复条目尝试保存时的默认错误消息 而它们应该是唯一的 即unique True 很像这样 email models EmailField unique True error messages unique This email h
  • 确定字符串是否为有效的浮点值

    有没有一种方法可以简单地检查字符串值是否是有效的浮点值 如果字符串不是数值 则对字符串调用 to f 会将其转换为 0 0 当传递一个无效的浮点字符串时 使用 Float 会引发异常 该字符串更接近我想要的 但我不想处理捕获异常 我真正想要
  • 如何创建看起来与 ContextMenu 完全相同的对话框?

    有时使用标准活动方法来创建上下文菜单并不方便 因为一个活动中可能有很多地方 但在不同的类中 需要显示上下文菜单 但从任何地方创建对话框都很容易 如何创建看起来与 ContextMenu 完全相同的对话框 我在哪里可以找到标准上下文菜单的布局
  • 如何检测安装的Chrome版本?

    我正在开发一个 Chrome 扩展程序 我想知道是否有一种方法可以检测用户正在使用哪个版本的 Chrome 获取 Chrome 的主要版本作为整数 function getChromeVersion var raw navigator us
  • 剥离功能未按预期工作

    def sstrip a b raw input enter the string to be stripped off i a strip b print i k raw input enter the string sstrip k o
  • 为什么 Python 中的元组不可变? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 python 字符串和元组是不可变的 https stackoverflow com questions 1538663 why are python strings and tuples a
  • 查找数据框中前 n 行的总和

    我想找到前面的总和n数据框中的行 例如 id 1 10 vals c 4 7 2 9 7 0 4 6 1 8 test data frame id vals So for n 3 我想将下一列计算为 test sum c NA NA 13
  • 与 C 数组相比,带有 NumPy 数组内存视图的 Cython 性能较差

    我遇到了一个非常奇怪的结果基准 http nbviewer ipython org github rasbt One Python benchmark per day blob master ipython nbs day4 python
  • Python,创建对象

    我正在尝试学习 python 现在我正在尝试掌握类的窍门以及如何使用实例来操作它们 我似乎无法理解这个练习问题 创建并返回一个学生对象 其姓名 年龄和专业为 与作为输入给出的相同 def make student name age majo
  • Electron 应用程序与 Angular 2 重新加载问题[重复]

    这个问题在这里已经有答案了 我正在使用 Angular 2 开发 Electron 桌面应用程序 一切都启动得很好并且按预期工作 但是当我重新加载应用程序时它失败了 看来是路由的问题 如果没有路由 应用程序将很好地重新加载并显示所做的更改