2016-07-01 37 views
21

我剛剛更新了我的Angular2項目RC4和路由器現在已經在控制檯發出此警告訊息,當我打開我的應用程序:在Angular2 RC4中,我如何向預編譯數組添加組件?

router.umd.js:2466 'FrontpageComponent' not found in precompile array. To ensure all components referred to by the RouterConfig are compiled, you must add 'FrontpageComponent' to the 'precompile' array of your application component. This will be required in a future release of the router. 

我一直試圖弄清楚到底我需要做什麼解決這個問題,但由於文檔稀疏,我無法找到答案。這個預編譯數組是什麼,我可以在哪裏找到它,或者如何添加它?

回答

22

在較新的路由器版本中,這不再需要。

< = RC.4

這只是一個附加的參數的@Component()@Directive()裝飾:

@Component({ 
    selector: '...', 
    template: '...', 
    directives: [FrontpageComponent], 
    precompile: [FrontpageCmponent] 
}) 

https://github.com/angular/angular/blob/6c5b653593eff19c5b9342b2cf0195aca49379cb/modules/%40angular/core/src/metadata/directives.ts#L968

/**
*定義的組件那應該是預編譯以及時
*此組件已定義。對於此處列出的每個組件,
* Angular將創建一個{@link ComponentFactory ComponentFactory}並將其存儲在* ComponentFactoryResolver ComponentFactoryResolver中。

+0

這似乎是工作,但要確保我得到這個權利,如果這是我的應用程序組件: 從@角/核心'import {組件}; 從'@ angular/router'導入{ROUTER_DIRECTIVES}; 從'./components/frontpage/frontpage.component'導入{FrontPageComponent}; @Component({ \t的moduleId:module.id, \t選擇: '應用', \t模板: '<路由器出口>', \t指令:[ROUTER_DIRECTIVES], \t預編譯:[FrontpageComponent] }) export class AppComponent {}' 我需要導入並添加每個組件,我路由到數組中? – Jeeveegee

+0

即使閱讀https://docs.google,我也不能說我完全理解這個主題。com/document/d/1VRNljdv-6QDY4_I0xx3DHd-IZ19QlthheMLdGGKAAzM/edit#heading = h.s4bm1zs9qwi7 ;-) –

+1

該文檔有助於解釋它,現在我明白了一點。謝謝。 – Jeeveegee

0

正如我所觀察到的,如果我已經在路由配置中使用'redirectTo'定義組件,那麼組件必須在根應用程序中定義'預編譯'。

3

沒有必要在指令中定義。使用下面的代碼

@Component({ 
    selector: '...', 
    template: '...', 
    directives: [], 
    precompile: [FrontpageCmponent] 
}) 
0

你有你的組件添加到您的應用組件的meatadata的一個預編譯陣列,以擺脫該消息的。

@Component({ 
selector:'my-app',  
template:`YOUR HTML 
    <router-outlet></router-outlet>` 
,styleUrls:['app/app.component.css'] 
,directives:[ROUTER_DIRECTIVES] 
,providers:[YOURPROVIDERS] 
,precompile:[YOURCOMPONENT]}) 
export class AppComponent{} 
2

如果您升級 「@角/路由器」: 「3.0.0-beta.1」 改爲 「@角/路由器」: 「3.0.0-beta.2」。於是警告將解決。