2016-11-26 15 views
2

WebWorkerでangular2アプリケーションを実行しています。見た目では、すべてが期待どおりに動作していますが、DOMでは何も起こっていないようです。たとえば、アプリケーションの読み込み中にプリローダーを表示しますが、実際のアプリケーションUIに置き換えられることはありません。角2のWebワーカー - 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); 

すべては私がwebworkerを使用していないときに私は期待通りに動作します。私は本当にこれが私が信じていることに迫っています...ただ私が逃しているものを見つけることができません。私はロードしていないものがあるか、ルーティングに関することを知らないものがあると思われます。

答えて

2

問題は、main.tsのbootstrapWorkerUi、特に@ angular/platform-webworkerのWORKER_UI_LOCATION_PROVIDERSに追加のプロバイダを提供する必要があることです。

新しい(作業)main.ts

​​
関連する問題