2016-02-20 2 views
0

Есть ли какой-либо рабочий пример (plunkr) для angular2 BETA 6 веб-рабочий с маршрутизатором?Рабочий пример для веб-мастера с маршрутизатором

UPDATE:

Моя реальная проблема в том, что нет UpToDate документации по этому вопросу для бета ... но как это было предложено ...

Мой текущий вопрос в том, что я могу загрузить angular2, но сама заявка не инициируется.

приложение/main.ts

import 'es6-shim'; 
import 'zone.js/dist/zone.min.js'; 
import 'reflect-metadata'; 
import 'rxjs/add/operator/map'; 
import {platform, Provider} from 'angular2/core'; 
import { 
    WORKER_RENDER_APPLICATION, 
    WORKER_RENDER_PLATFORM, 
    WORKER_SCRIPT 
} from 'angular2/platform/worker_render'; 

platform([WORKER_RENDER_PLATFORM]) 
    .application([ 
    WORKER_RENDER_APPLICATION, 
    new Provider(WORKER_SCRIPT, {useValue: 'loader.js'}) 
    ]); 

loader.js

importScripts('jspm_packages/system.src.js', 'config.js'); 
System.import('./app/worker') 
    .catch(function (error) { 
    console.error('ERROR @ loader :', error); 
}); 

Если я использую .Application функцию, я получаю ошибку:

Error: Cannot use asyncronous app initializers with application. Use asyncApplication instead 

worker.ts (.Application функция)

import {Provider, provide, platform, PLATFORM_DIRECTIVES} from 'angular2/core'; 
import {ROUTER_PROVIDERS} from 'angular2/router'; 
import {HTTP_PROVIDERS} from 'angular2/http'; 
import {App} from './app'; 

import {WORKER_APP_APPLICATION, WORKER_APP_PLATFORM, WORKER_APP_ROUTER} from 'angular2/platform/worker_app'; 

platform([WORKER_APP_PLATFORM]) 
    .application([ 
     WORKER_APP_APPLICATION, 
     ROUTER_PROVIDERS, 
     HTTP_PROVIDERS, 
     WORKER_APP_ROUTER 
    ]) 
    .then((ref) => { 
     console.log('bootstrapping', ref); 
     ref.bootstrap(App) 
    }); 

Если я использую asyncApplication, чем первый журнал консоли написано, но в начальной загрузки функции на второй не ...

main.ts (функция .asyncApplication)

import {Provider, provide, platform, PLATFORM_DIRECTIVES} from 'angular2/core'; 
import {ROUTER_PROVIDERS} from 'angular2/router'; 
import {HTTP_PROVIDERS} from 'angular2/http'; 
import {App} from './app'; 

import {WORKER_APP_APPLICATION, WORKER_APP_PLATFORM, WORKER_APP_ROUTER} from 'angular2/platform/worker_app'; 

platform([WORKER_APP_PLATFORM]) 
    .asyncApplication(() => { 
     console.log('async app load'); 
     return Promise.resolve([ 
      ROUTER_PROVIDERS, 
      WORKER_APP_ROUTER, 
      WORKER_APP_APPLICATION, 
      HTTP_PROVIDERS 
     ]); 
    }) 
    .then((ref) => { 
     console.log('bootstrapping', ref); 
     ref.bootstrap(App) 
    }); 

Как я могу инициировать часть веб-рабочего, чтобы иметь возможность загрузить основной компонент (приложение)?

+1

это не правильный вопрос, как на SO критериев. вы должны опубликовать свой код вместо публикации такого вопроса. либо отправьте свой код там, где вы потерпели неудачу, либо попробуйте найти учебники для того же –

+0

. Я не согласен, так как это определенно сэкономит время для меня и для других, если кто-то сможет указать на какую-нибудь документацию/учебник/пример, который работает ... очевидно, я искал его и не нашел ... так что даже если есть такое, не очевидно найти ... – eesdil

+0

Вы можете прочитать, хотя темы в меню справки. Просто потому, что вы считаете это полезным, это не значит, что это правильно. Существует определенная прямая причина ссылки «закрыть» выше для вопросов, которые запрашивают библиотеки, книги или другие внешние ресурсы. –

ответ

2

Я нашел этот пример в угловом хранилище: https://github.com/angular/angular/tree/master/modules/playground/src/web_workers/router

И на самом деле проблема заключалась в том, что я не включил: WORKER_RENDER_ROUTER в main.ts (UI часть)

Также вратаря добавить W_W часть:

new Provider(LocationStrategy, {useClass: HashLocationStrategy}) 

Так полный код, если кто-то заинтересован:

worker.ts:

import 'es6-shim'; 
import 'zone.js/dist/zone.min.js'; 
import 'reflect-metadata'; 
import 'rxjs/add/operator/map'; 
import {Provider, provide, platform, PLATFORM_DIRECTIVES} from 'angular2/core'; 
import {ROUTER_PROVIDERS} from 'angular2/router'; 
import {HashLocationStrategy, LocationStrategy} from "angular2/router"; 
import {HTTP_PROVIDERS} from 'angular2/http'; 
import {App} from './app'; 

import { 
    WORKER_APP_APPLICATION, 
    WORKER_APP_PLATFORM, 
    WORKER_APP_ROUTER 
} from 'angular2/platform/worker_app'; 

let platformRef = platform([WORKER_APP_PLATFORM]) 
    .asyncApplication(null,[ 
     WORKER_APP_APPLICATION, 
     WORKER_APP_ROUTER, 
     HTTP_PROVIDERS, 
     new Provider(LocationStrategy, {useClass: HashLocationStrategy}) 
    ]); 
platformRef.then((ref) => { 
    ref.bootstrap(App) 
}); 

main.ts:

import 'es6-shim'; 
import 'zone.js/dist/zone.min.js'; 
import 'reflect-metadata'; 
import 'rxjs/add/operator/map'; 
import {platform, Provider} from 'angular2/core'; 
import { 
    WORKER_RENDER_APP, 
    WORKER_RENDER_PLATFORM, 
    WORKER_SCRIPT, 
    WORKER_RENDER_ROUTER 
} from 'angular2/platform/worker_render'; 
import {BrowserPlatformLocation} from "angular2/src/router/browser_platform_location"; 
import {MessageBasedPlatformLocation} from "angular2/src/web_workers/ui/platform_location"; 

platform([WORKER_RENDER_PLATFORM]) 
    .application([ 
    WORKER_RENDER_APP, 
    new Provider(WORKER_SCRIPT, {useValue: 'loader.js'}), 
    WORKER_RENDER_ROUTER 
    ]);