Angular2组件如何导入指令组件?
Angular2 Component How to Import Directive Component?
我刚刚升级到 angular2 最终版本,与 rc4 相比有很多重大变化。其中之一是组件上不再有指令集合......我曾经做过这样的事情:
@Component({
selector: 'resource-tab',
templateUrl: './app/applicationMgmt/resource/resource-tab.html',
directives: [
NgSwitch,
NgSwitchCase,
NgSwitchDefault,
OtherResourceEditorComponent,
MvcResourceEditorComponent,
WcfResourceEditorComponent,
WebResourceEditorComponent,
WebApiResourceEditorComponent,
ConfigResourceEditorComponent
]
})
引用在视图模板上用作指令的其他组件...现在如何做到这一点?
在 Angular2.0.0 中 内置指令 是 accessible/available 和 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 { }
您应该在 NgModule 的声明 属性 下指定组件、指令和管道。所以基本上是我将 angular 2 项目升级到 2.0.0 的最简单方法。版本正在为应用程序定义一个模块 (app.module.ts) 将所有模块放在那里,然后开始将其分解为更小的模块。
可以找到很好的参考 here
最好的方法是创建一个像这样的 ResourceEditorModule
:
@NgModule({
declarations:[
OtherResourceEditorComponent,
MvcResourceEditorComponent,
WcfResourceEditorComponent,
WebResourceEditorComponent,
WebApiResourceEditorComponent,
ConfigResourceEditorComponent
],
exports:[
OtherResourceEditorComponent,
MvcResourceEditorComponent,
WcfResourceEditorComponent,
WebResourceEditorComponent,
WebApiResourceEditorComponent,
ConfigResourceEditorComponent
]
})
export class ResourceEditorModule{}
并在您的 AppModule
:
中添加 ResourceEditorModule
作为导入
@NgModule({
imports:[
...
...
ResourceEditorModule
],
...
...
...
})
export class AppModule{}
背后模块的想法是将您的组件、指令、管道和服务分成属于同一个 "package" 的组,就像您需要为 HttpModule
使用 http 所需的一切一样使用 FormsModule
的表格
正如其他人所说,您需要将指令和提供程序移至应用的模块中。 RC4 to RC5 migration guide 解释了如何执行此操作以及其他一些潜在问题。
我刚刚升级到 angular2 最终版本,与 rc4 相比有很多重大变化。其中之一是组件上不再有指令集合......我曾经做过这样的事情:
@Component({
selector: 'resource-tab',
templateUrl: './app/applicationMgmt/resource/resource-tab.html',
directives: [
NgSwitch,
NgSwitchCase,
NgSwitchDefault,
OtherResourceEditorComponent,
MvcResourceEditorComponent,
WcfResourceEditorComponent,
WebResourceEditorComponent,
WebApiResourceEditorComponent,
ConfigResourceEditorComponent
]
})
引用在视图模板上用作指令的其他组件...现在如何做到这一点?
在 Angular2.0.0 中 内置指令 是 accessible/available 和 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 { }
您应该在 NgModule 的声明 属性 下指定组件、指令和管道。所以基本上是我将 angular 2 项目升级到 2.0.0 的最简单方法。版本正在为应用程序定义一个模块 (app.module.ts) 将所有模块放在那里,然后开始将其分解为更小的模块。 可以找到很好的参考 here
最好的方法是创建一个像这样的 ResourceEditorModule
:
@NgModule({
declarations:[
OtherResourceEditorComponent,
MvcResourceEditorComponent,
WcfResourceEditorComponent,
WebResourceEditorComponent,
WebApiResourceEditorComponent,
ConfigResourceEditorComponent
],
exports:[
OtherResourceEditorComponent,
MvcResourceEditorComponent,
WcfResourceEditorComponent,
WebResourceEditorComponent,
WebApiResourceEditorComponent,
ConfigResourceEditorComponent
]
})
export class ResourceEditorModule{}
并在您的 AppModule
:
ResourceEditorModule
作为导入
@NgModule({
imports:[
...
...
ResourceEditorModule
],
...
...
...
})
export class AppModule{}
背后模块的想法是将您的组件、指令、管道和服务分成属于同一个 "package" 的组,就像您需要为 HttpModule
使用 http 所需的一切一样使用 FormsModule
正如其他人所说,您需要将指令和提供程序移至应用的模块中。 RC4 to RC5 migration guide 解释了如何执行此操作以及其他一些潜在问题。