延迟 Angular 应用程序启动直到承诺解决?

2023-12-07

目前,我有这个:

new Loader().load().then(() => {
    platformBrowserDynamic().bootstrapModule(AppModule);
  });

问题是我不一定需要推迟一切直到承诺解决,只需ngOnInit以及任何路线解析。我想允许任何其他不路由或渲染的 Angular2 设置,但会阻止这些设置,直到承诺解决。有没有更有效的方法来做到这一点?


使用 APP_INITIALIZER

第一个选择是使用APP_INITIALIZER。有了这个,你可以在开始之前做一些初始的事情AppComponent被引导:

@NgModule({
    // ...
    providers: [
        {
            provide: APP_INITIALIZER, 
            useFactory: appInitFactory, 
            deps: [AppInitService],
            multi: true
        }
    ]
})
export class AppModule {}

随着deps您可以在工厂内注入您可能需要的服务的数组:

export function appInitFactory(appInitService: AppInitService): () => Promise<any> {
    return () => appInitService.initializeApplication();
}

您必须返回一个(箭头)函数。

使用路由器配置

第二个选项,如果您使用Router是设置initialNavigation to false在你的forRoot致电RouterModule:

@NgModule({
    imports: [
       RouterModule.forRoot(AppRoutes, {initialNavigation: false})
    ]    
})
export class AppModule {}

然后在你的里面AppComponent你应该有一些服务Promise逻辑,并在完成后导航到您想去的地方。这个解决方案的“问题”是AppComponent确实被初始化,但如果您只关心实际路线没有立即得到解决,但在等待解决时确实有某种应用程序外壳,您可以使用这个

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

延迟 Angular 应用程序启动直到承诺解决? 的相关文章

  • Firestore从集合中获取文档ID

    我正在尝试使用 id 检索我的文档 但无法弄清楚 目前我像这样检索我的文档 const racesCollection AngularFirestoreCollection
  • Angular2 - Keyup 需要澄清

    在我的应用程序中 我有条件地添加一个类 当用户输入某些内容时 我正在检查该值 并相应地添加类名称 效果很好 但它只更新一组 keyup 0 设置一些值keyup 这不像angular 1 here 所以有人解释一下为什么我们要设置 keyu
  • 在 MatDialog Content Angular 7 中添加新行

    我正在使用 MatDialog 并尝试在内容定义中添加新行 两个都 n and 没有这样做 有没有另一种方法无需手动进入 html 并更改它 因为它是可重用的组件 var status MatDialogRef
  • angular2 使用 router.subscribe 来观察 url 变化

    我在用着router event subscribe angular router观察 url 变化以执行if虽然声明event subscribe工作正常 但我的问题是我怎样才能避免重复我的if声明只是为了在这些网址上显示标题 这可能是别
  • 如何配置 Angular2 Quickstart 来运行 phantomjs?

    我想弄清楚如何运行测试Angular2 快速入门 https github com angular quickstart与 phantomjs 我认为这些步骤足以配置 Karma 1 克隆存储库 git clone https github
  • 获取路由查询参数

    我正在尝试从 rc1 迁移到 rc4 但在获取查询字符串参数时遇到问题 ActivatedRoute 对象始终为空 英雄组件 ts import Component OnInit from angular core import Contr
  • Angular 5 - 谷歌未定义(谷歌地图)

    我想在我的 Angular 5 应用程序上使用谷歌地图 但遇到了一些问题 加载视图时 我在 js 控制台中收到错误 LoginComponent Host ngfactory js sm 1 ERROR ReferenceError goo
  • 我可以将 Angular Material 2.0.0-alpha.9-3 与 Angular 2.1 一起使用吗?

    我尝试将 Angular material 2 0 0 alpha 9 3 与 Angular 2 1 一起使用 但出现例外情况 zone js 1274 获取http localhost 3000 angular material htt
  • Angular2如何更改禁用按钮的颜色

    我有这个按钮
  • 方法与管道

    在 Angular 应用程序中的模板插值中使用管道和方法有区别吗 例如 h1 name toLowerCase h1 vs h1 name lowercase h1 就性能而言 是有真正的收获还是只是个人喜好 我知道调用模板中的方法通常会降
  • Angular 中的单元测试点击事件

    我正在尝试将单元测试添加到我的 Angular 2 应用程序中 在我的一个组件中 有一个带有 click 处理程序 当用户单击按钮时 将调用在中定义的函数 ts类文件 该函数在 console log 窗口中打印一条消息 表明该按钮已被按下
  • 绑定到元素(div)的大小

    我有一个具有宽度和高度属性的组件 如何将组件的视图高度和宽度绑定到这些属性 我需要在组件大小发生变化时更新它们 即通过重新调整浏览器窗口的大小 Use window resize onResize event 聆听全球事件 您可以使用win
  • Mapbox 打字稿

    通过关注这个项目 我成功地让 Leaflet 与 Angular 2 和 Webpack 一起工作 Angular 2 传单启动器 https github com haoliangyu angular2 leaflet starter 我
  • 获取异常 jQuery 必须包含在 Bootstrap 的 JavaScript 之前

    我遇到以下异常 bootstrap js 240 Uncaught TypeError Bootstrap 的 JavaScript 需要 jQuery jQuery 必须包含在 Bootstrap 的 JavaScript 之前 在 Ob
  • 如何将 Angular Universal 应用程序部署到 Node.js 生产服务器?

    我有一个带有 Universal 的 Angular 8 应用程序 我想将其部署到共享 Web 主机生产服务器 我提前与网络主机核实过 他们告诉我可以在他们的共享网络托管上托管 Angular 通用网络应用程序 但是 无论我做什么 我都无法
  • 无法绑定到“数据”,因为它不是“教学数据”的已知属性

    为什么我会收到以下错误 Can t bind to data since it isn t a known property of teach data 当尝试
  • 使用 rxjs 将数据添加到 http 响应

    我有一个包含司机 ID 的旅行实体 我可以使用 RESTFull 端点获取获取行程 例如 trips 2 example response id 2 driver id 123 我可以使用端点获取驱动程序详细信息 例如 drivers 12
  • Angular 4 中的箭头函数(Lambda 函数)

    我对lambda知之甚少 lambda表达式被视为一个函数 我们有很多方法可以做到这一点 这是我的简单功能TypeScript file byPan card1 card2 return card1 pan card2 pan 我在 HTM
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web
  • Angular 2如何将子组件中的方法发送到父组件

    我试图从子组件中删除输入字段 它是通过 Output将激活方法的信息delete 在父组件中 先感谢您 您可以使用以下方法来完成此操作EventEmitter and Output 在下面的代码片段中 您可以调用passDataToPare

随机推荐

  • 如何唤醒休眠线程并退出主线程?

    我正在创建 10 个线程 每个线程都会执行一些任务 有 7 项任务需要完成 由于任务数量小于线程数量 因此总会有 3 个线程处于休眠状态且不执行任何操作 我的主线程必须等待任务完成 只有当所有任务完成时 即线程退出时 才退出 我正在 for
  • 更改 tomcat 上 spring mvc 应用程序的应用程序根目录

    我正在 Spring MVC 3 0 上使用示例 RESTEasy 2 0 资源并部署到 Tomcat 6 我可以通过 http localhost 8080 examples resteasy 2 1 SNAPSHOT contacts
  • 使用 python 打印 Excel 工作簿

    假设我有一个excel文件excel file xlsx我想使用 Python 将其发送到我的打印机 所以我使用 import os os startfile path to file print 我的问题是 这仅打印 Excel 工作簿的
  • 如何搜索并替换内部包含等号“=”的字符串

    我必须从像 Pippo K 5 这样的 txt 中搜索字符串并将其替换为 Pippo K 1 我需要搜索整个字符串 我所做的是 set search Pippo K 5 set replace Pippo K 1 set textFile
  • 连接不同数据库中的多个表?数据库

    嘿 我正在寻找一种好方法 使用 php 连接到 mysql 中的至少 2 个数据库 并从表中收集每个数据库中的信息 这些表格将包含相关信息 例如 我在一个名为 sites 的表中的一个数据库 siteinfo 中有站点名称 我还在另一个数据
  • 如何更改数据透视表,使其以所需的方式显示数据?

    我已经能够将数据透视表拖到舞池上 但无法让它趴下来 似乎我们一直踩到对方的脚趾 我已经在工作表上获得了用于构建数据透视表的数据 此类描述了该数据 public class PriceVarianceData public String Un
  • Mac OS 上 Valgrind 下的 std::thread.join() SIGSEGV

    以下简单代码 C 11 将在 Mac OS 和 Linux 上运行 include
  • 位图 - 内存不足异常

    当我尝试从相机或图库获取图像时 出现错误 这是 logcat 的一部分 06 27 05 51 47 297 E dalvikvm heap 438 Out of memory on a 35295376 byte allocation 0
  • 将 JavaMail 与 Google AppEngine 一起使用时出现异常:如何解决此问题?

    我正在尝试使用 JavaMail 编写一个 Java 程序在 2 个用户之间发送电子邮件 我还没有将mail jar 和activation jar 文件添加到我的appengine 项目中 因为我在某处读到这会导致抛出异常 因为appen
  • 如何解决 Rust 中可变引用的生命周期错误?

    我不确定为什么以下代码无法编译 use std cmp Ordering struct MyItr lt a gt cur a i32 impl lt a gt Ord for MyItr lt a gt fn cmp self other
  • 如何根据第一个响应进行第二个 API 调用?

    我需要调用 2 个 API 来显示组件上的数据 但第二个 API 需要第一个 API 响应中的标头 我正在使用 React Hooks 我从第一个响应更新状态 以便稍后可以在第二次调用中使用它 但它未定义 我究竟做错了什么 P s 如果有更
  • 如何在 Matplotlib 中仅绘制表格?

    用matplotlib可以只画一张表格吗 如果我取消注释该行 plt bar index data row bar width bottom y offset color colors row 这个例子的code 情节仍然可见 我想在我的
  • -[NSUserDefaults registerDefaults:]有什么用?

    有什么区别 NSUserDefaults standardUserDefaults registerDefaults NSDictionary dictionaryWithObjectAndKey anObject something 和这
  • Xcode 代码感知颜色/完成不起作用

    EDIT 这很奇怪 如果我在欢迎屏幕中双击该项目的 最近的项目 项 代码感知和着色效果很好 但如果我只是单击Open 欢迎屏幕右下角 事实并非如此 开幕于File gt Recent projects也不起作用 双击也不起作用 xcodep
  • 在 attr() 回调中执行函数?

    不确定我这样做是否正确 这是我的 js var currentIMG leftMenuProductButton hover function currentIMG swapImg attr src var swapIMG this nex
  • 带有连接文件描述符的 pthread 竞争条件

    我正在为学校作业实现一个简单的多线程 Web 服务器 并且遇到了用于每个连接的连接文件描述符的一些同步问题 我最初的问题是 一个线程有时会关闭另一个线程中也使用的文件描述符的文件描述符 conn fd 当其他线程尝试发送 或接收 时 这将导
  • 从 JavaScript 操作 CSS 的最佳实践?

    今天我遇到了一个问题 一个流氓 z index 属性导致了问题 好吧 确实发生了 但问题是找到声明它的地方 浏览器显示内联样式 但在标记中它是空的 正在广泛搜索解决方案z index 1001也什么也没给 最后我在一些JavaScript中
  • 从输入参数的所有可能组合生成作业矩阵

    我想使用 Azure Pipelines 生成作业矩阵策略 但不是通过明确列出所有可能的组合 而不是这样做 matrix core211 module core scala 2 11 python211 module python scal
  • 如何删除 CSV 文件中的列?

    我已经能够使用本网站上几个用户的输入使用 python 创建 csv 我希望对您的帖子表示感谢 我现在很困惑 将发布我的第一个问题 我的 input csv 如下所示 day month year lat long 01 04 2001 4
  • 延迟 Angular 应用程序启动直到承诺解决?

    目前 我有这个 new Loader load then gt platformBrowserDynamic bootstrapModule AppModule 问题是我不一定需要推迟一切直到承诺解决 只需ngOnInit以及任何路线解析