2016-12-16 11 views
0

zone.js我想現有的打字稿項目中,我使用browserify捆綁實際應用中使用角度。使用角2不Reflect.js並在瀏覽器中

現在,我已經基本上只是從setup tutorial重建應用程序,並設法得到它的所有工作:

角/應用/ app.component.ts

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: `<h1>Hello {{name}}</h1>` 
}) 
export class AppComponent { name = 'Angular'; } 

角/應用/app.module.ts

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { AppComponent } from './app.component'; 

@NgModule({ 
    imports: [BrowserModule], 
    declarations: [AppComponent], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

角/app/main.ts

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 
import { AppModule }    from './app.module'; 

export function render() {  
    platformBrowserDynamic().bootstrapModule(AppModule);  
} 

最後我捆綁,門面它獲取通過browserify編譯成standanlone束:

我-app.ts

import { render } from "./angular/app/main"; 

export = { 
    testAngular: render // This is the function that I call in my HTML page 
} 

的唯一讓我感到困擾的是我必須添加

<script src="path/to/zone.js"></script> 
<script src="path/to/Reflect.js"></script> 

到使用我的捆綁角模塊,每個HTML頁面,在我的角度應用擺脫因類裝飾錯誤的:需要

未捕獲反映的元數據墊片使用類裝飾時

有一種方法來擺脫這種情況或使這兩個模塊的一部分我的包由某種導入語句?

或有任何其他處理這些墊片解決這個問題最好的做法是什麼?

回答

2

我管理由在頂部(!!)加入

import 'zone.js'; 
import 'reflect-metadata'; 

my-app.ts(由束根文件),以解決這個問題。

0

相關公認的答案,但沒有足夠的信譽評論

你不應該從你的應用程序是這樣導入zone.js。如果你 這樣做,你已經太遲加載的prulfill這意味着你的環境(模塊加載器)的一部分 將不會在 的監督下 - 事情可能似乎工作了一段時間,但遲早 你會碰到問題時,更新到UI阻止事情發生,你會 不知道爲什麼。

出於這個原因,最好始終包括任何 模塊加載器(systemjs)或應用程序代碼之前,所有polyfills。這就是爲什麼我們建議 裝載區中的index.html的第一個腳本。

從GitHub:issuecomment

總之添加zone.js和reflect.js中的index.html。你應該只在索引頁面內寫入腳本文件一次(每隔一頁加載索引頁面,因此zone和reflect.js已經加載了它們)。

相關問題