在Angular2 RC4中,如何将组件添加到预编译数组?

时间:2016-07-01 11:40:33

标签: angular router

我刚刚将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.

我试图找出我需要做些什么来解决这个问题,但由于文档很少,我无法找到答案。什么是这个预编译数组,我在哪里可以找到它或如何添加它?

5 个答案:

答案 0 :(得分: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}并将其存储在中   * {@link ComponentFactoryResolver ComponentFactoryResolver}。

答案 1 :(得分:3)

无需在指令中定义。使用下面的代码

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

答案 2 :(得分:2)

如果您将“@ angular / router”:“3.0.0-beta.1”升级为“@ angular / router”:“3.0.0-beta.2”。然后警告将被解决。

答案 3 :(得分:0)

正如我所观察到的,如果我在路由配置中使用'redirectTo'定义了组件,那么组件也必须在根应用程序中定义为'precompile'。

答案 4 :(得分:0)

您必须将组件添加到应用组件的元数据上的预编译数组中,以便删除该消息。

@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{}