2016-09-22 80 views
1

我刚刚升级到了angular2最终版本,并且有很多来自rc4的重大更改。其中之一就是不再有分量上的指令集......我uesd做这样的事情:Angular2组件如何导入指令组件?

@Component({ 
    selector: 'resource-tab', 
    templateUrl: './app/applicationMgmt/resource/resource-tab.html', 
    directives: [ 
     NgSwitch, 
     NgSwitchCase, 
     NgSwitchDefault, 
     OtherResourceEditorComponent, 
     MvcResourceEditorComponent, 
     WcfResourceEditorComponent, 
     WebResourceEditorComponent, 
     WebApiResourceEditorComponent, 
     ConfigResourceEditorComponent 
    ]  
}) 

引用被用作视图模板指令其他组件...如何现在有人这样做吗?

+0

把这个所有指令,组件,管道放在'NgModule'的'declarations'数组中 –

回答

3

这样做是创建一个ResourceEditorModule这样的最佳方式:

@NgModule({ 
    declarations:[ 
      OtherResourceEditorComponent, 
      MvcResourceEditorComponent, 
      WcfResourceEditorComponent, 
      WebResourceEditorComponent, 
      WebApiResourceEditorComponent, 
      ConfigResourceEditorComponent 
    ], 
    exports:[ 
      OtherResourceEditorComponent, 
      MvcResourceEditorComponent, 
      WcfResourceEditorComponent, 
      WebResourceEditorComponent, 
      WebApiResourceEditorComponent, 
      ConfigResourceEditorComponent 
    ] 
}) 
export class ResourceEditorModule{} 

,并添加ResourceEditorModule作为导入AppModule

@NgModule({ 
    imports:[ 
     ... 
     ... 
     ResourceEditorModule 
    ], 
    ... 
    ... 
    ... 
}) 
export class AppModule{} 

模块背后的想法是将你的组件,指令,管道和服务分成属于同一个“包”的组,像你需要使用http的所有东西HttpModule,您需要使用表单的所有内容FormsModule

2

在Angular2.0.0 内置指令都可以访问/可用BrowserModule。您只需将其导入,如下所示,您将可以使用大部分内置指令。

对于customDirective,你需要用声明元如图所示宣布他们,

import { NgModule }  from '@angular/core'; 
    import { BrowserModule } from '@angular/platform-browser'; 

    /*---------import all custom directives-----------*/ 

    import { OtherResourceEditorComponent} from 'valid path'; 
    import { MvcResourceEditorComponent } from 'valid path'; 
    ... 
    ... 

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

你应该根据NgModule的申报财产指定组件,指令和管道。所以基本上最简单的方法是将我的angular 2项目升级到2.0.0。版本为应用程序(app.module.ts)定义了一个模块,然后开始分解更小的模块。 这个很好的参考,可以发现here

1

正如其他人所说的,您需要将您的指令和提供程序移动到您的应用程序模块。 RC4 to RC5 migration guide解释了如何做到这一点,以及一些其他潜在的问题。