Angular 2 Web Worker - UI 未运行

2023-12-24

我有一个 angular2 应用程序在网络工作者中运行。从表面上看,一切都按我的预期运行,但 DOM 似乎没有发生任何事情。例如,我在应用程序加载时显示预加载器,但它永远不会被实际应用程序 UI 替换。

<my-app>Loading...</my-app>

当 AppModule 加载时,我的应用程序中没有呈现任何内容...即使我看到所有组件和服务完全按照我在后台工作程序中的预期运行...整个应用程序运行良好 - 只是没有 UI。

import { NgModule } from '@angular/core';
import { HttpModule, XSRFStrategy } from '@angular/http';
import { FormsModule } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { WorkerAppModule } from '@angular/platform-webworker';
import { WORKER_APP_LOCATION_PROVIDERS } from '@angular/platform-webworker';

import { AppComponent } from './app.component';
import { NoXSRFStrategy } from './common/backends/XSRFStrategies';

@NgModule({
    imports: [
        BrowserModule,
        HttpModule,
        FormsModule,
        routing,  

        WorkerAppModule         
    ],
    declarations: [
        AppComponent
    ],
    providers: [
        { provide: XSRFStrategy, useClass: NoXSRFStrategy },

        WORKER_APP_LOCATION_PROVIDERS           
    ],
    bootstrap: [AppComponent]
})
export class AppModule {    
    constructor() { }    
}

在我的 main.ts 中

UI_THREAD_CHANNEL = 'UI_THREAD_CHANNEL'
bootstrapWorkerUi('/webworker-loader.js').then((hWnd) => {

                // register methods the WebWorker needs to run on the UI thread.
                let brokerFactory: ServiceMessageBrokerFactory = hWnd.injector.get(ServiceMessageBrokerFactory);
                let broker = brokerFactory.createMessageBroker(UI_THREAD_CHANNEL, false);

                broker.registerMethod('redirect', [PRIMITIVE], (href: string) => {
                    window.location.href = href;
                });
            });

在我的 webworker-main.ts 中

import { platformWorkerAppDynamic } from '@angular/platform-webworker-dynamic';
import { AppModule } from './app.module';
const platform = platformWorkerAppDynamic();
platform.bootstrapModule(AppModule);

当我不使用网络工作者时,一切都会按我的预期进行。我相信我真的很接近完成这项工作......只是找不到我所缺少的东西。我怀疑有一些东西我没有加载 - 或者有一些我不知道与路由相关的东西。


弄清楚了。

问题是,必须向 main.ts 中的 bootstrapWorkerUi 提供额外的提供程序 - 特别是来自 @angular/platform-webworker 的 WORKER_UI_LOCATION_PROVIDERS 。

新的(工作的)main.ts

import { WORKER_UI_LOCATION_PROVIDERS, bootstrapWorkerUi, 
ServiceMessageBrokerFactory } from '@angular/platform-webworker';

UI_THREAD_CHANNEL = 'UI_THREAD_CHANNEL'
bootstrapWorkerUi('/webworker-loader.js', WORKER_UI_LOCATION_PROVIDERS).then((hWnd) => {

    // register methods the WebWorker needs to run on the UI thread.
    let brokerFactory: ServiceMessageBrokerFactory = hWnd.injector.get(ServiceMessageBrokerFactory);
    let broker = brokerFactory.createMessageBroker(UI_THREAD_CHANNEL, false);

    broker.registerMethod('redirect', [PRIMITIVE], (href: string) => {
        window.location.href = href;
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2 Web Worker - UI 未运行 的相关文章

随机推荐

  • 列导向垫台

    我遇到的情况是 从后端收到的数据是面向列的 该数据的示例如下 columnName ID cells 1 2 3 4 5 columnName Name cells a b c d e 到目前为止 我已经成功地配置了我的 mat table
  • 如何在 Django Rest Framework 中创建 Json Web 令牌以供用户登录?

    我想将 JWT 集成到我的用户登录 API 中以进行身份 验证 如何将它与我在下面添加的现有代码集成 在代码中 我添加了一个需要相应更改的虚拟令牌 谢谢 添加我的 django 项目中的一些相关代码部分以供参考 序列化器 class Use
  • Boost.Asio SSL 上下文不验证证书

    这是我之前问题的延续 Boost Asio SSL上下文load verify paths未加载证书 https stackoverflow com questions 40198728 boost asio ssl context loa
  • 如何从 android 将参数传递到 HTML 文件

    我可以在 android webview 中很好地显示 HTML 文件内容 现在我如何将参数传递到 HTML 文件中 例如 我的 HTML 内容有一个视频播放器 我需要将动态值 URL 传递到 HTML 文件中以播放动态视频 我的 HTML
  • 设置带有“free”刻度的分类轴标签 ggplot2

    我正在尝试使用 R 3 1 1 中的 ggplot2 包 1 0 1 和 scales free 在分面图中的分类轴上设置标签 如果我在没有手动设置轴刻度标签的情况下进行绘图 它们会正确显示 第一个图 但是当我尝试设置标签 第二个图 时 两
  • Spring Cloud Stream Kafka Streams Binder KafkaException:无法启动流:“监听器”不能为空

    我是 Kafka Streams 和 Spring Cloud Stream 的新手 但在将集成相关代码移至属性文件中方面阅读过有关它的好文章 以便开发人员可以主要关注事物的业务逻辑方面 这里我有我的简单应用程序类 package com
  • 从插件模块读取 dll.config (不是 app.config!)

    我正在编写一个 C NET 2 0 dll 它是一个插件更大的应用 https en wikipedia org wiki AutoCAD 我的模块的 Visual Studio 项目有一个 app config 文件 该文件与 MyPro
  • 在 unix/linux shell 中进行模式匹配时如何使用反通配符或负通配符?

    假设我想复制目录的内容 不包括名称中包含 音乐 一词的文件和文件夹 cp exclude matches Music target directory 应该用什么来代替 exclude matches 来实现此目的 在 Bash 中 您可以
  • git 嵌套存储库 - 子模块、符号链接、其他

    我正在尝试使用 git 设置我的 Zend Framework 开发环境 或更重要的是我的目录结构 然而 我的根本问题实际上与所涉及的特定库无关 但更重要的是如何让 git 完成我想要的事情 我的项目根目录是 home jsuggs pro
  • 如何在应用 后获取 BitmapImage 字节

    这个 BitmapSource originalImage byte originalPixels originalPixels new byte int originalImage Width int originalImage Heig
  • 在python中通过xml.etree.ElementTree生成的xml文件中插入换行符

    我在 python 中使用 xml etree ElementTree 创建了一个 xml 文件 然后我用 tree write filename UTF 8 将文档写出到文件中 但是当我使用文本编辑器打开文件名时 标签之间没有换行符 一切
  • 经纬度转为时区

    有谁知道是否有任何现有的解决方案可以从一个点 经度 纬度 确定时区 我可以对这个项目所需的一些内容进行硬编码 但最好使用预先构建的解决方案 thanks 使用 Web 服务 例如由geonames http www geonames org
  • 在 RowSort 操作后执行操作

    我有一个JTable and a TableRowSorter我想在排序完成后执行操作 我一直在浏览网络 但到目前为止我还没有什么运气 最初我以为只是一个RowSorterListener可以解决这个问题 但不幸的是它在排序完成后不会执行该
  • 在 JAVA 中验证 JSON 字符串对象格式的最佳方法是什么

    我想验证字符串对象是否是有效的 json 对象 无论其数据正确性如何 换句话说 这个 json 字符串的格式正确吗 例如 我得到 abc 123 cba 233 该过程应返回格式异常 abc 123 cba 233 应该给予相同的 您可能认
  • MSIL检查

    我有一些字节格式的 MSIL 反射的 GetMethodBody 的结果 我想对其进行一些分析 我想在 MSIL 中找到使用 new 运算符创建的所有类 关于如何以编程方式做到这一点有什么想法吗 我最终在这里使用了 MSIL 解析器 htt
  • 在Linux上编写多线程TCP服务器

    在工作中 我的任务是实现 TCP 服务器作为 Modbus 从设备的一部分 我在堆栈交换和互联网上读了很多书 包括优秀的http beej us guide bgnet http beej us guide bgnet 但我正在努力解决设计
  • 如何通过 JavaScript 设置浏览器选项卡的锚点目标名称?

    当从外部超链接调用我的网站时 如果它已经打开 它将在同一浏览器选项卡中重新打开 这可以通过在超链接的 HTML 中指定适当的目标属性来实现 a href http my website org target self a 但是 如果在未指定
  • ASP.NET Core 2.2(发布)产生错误并停止 w3wp

    刚刚将我们的 ASP NET Core 2 1 5 项目之一升级到今天发布的 v 2 2 部署到生产服务器后 它会失败并关闭工作进程 项目在 Windows 10 1803 17134 441 上本地运行良好 但在生产服务器上运行不佳 Wi
  • 与 2013 年相比,initializer_list 中的双重删除

    今天 我的项目中遇到了内存问题 其中一个类使用 c 11 初始化器列表 系统发出内存问题信号 dbgdel cpp 中的表达式 BLOCK TYPE IS VALID pHead gt nBlockUse 我将代码简化为一个简单的示例 它不
  • Angular 2 Web Worker - UI 未运行

    我有一个 angular2 应用程序在网络工作者中运行 从表面上看 一切都按我的预期运行 但 DOM 似乎没有发生任何事情 例如 我在应用程序加载时显示预加载器 但它永远不会被实际应用程序 UI 替换