我目前正在关注'角度2完整指南'视频课程,每次他需要导入一个组件时,他还要确保将它添加到这样的指令中: `
@Component({
selector: 'rb-recipe-list',
templateUrl: './recipe-list.component.html',
styleUrls: ['./recipe-list.component.css'],
directives: [RecipeItemComponent]
})
`
但它适用于我,即使我没有指令行。如果我已经在......中导入了该组件,我甚至不确定它的意义。
答案 0 :(得分:0)
正确,这是多余的,至少在目前的(4.4.6)版本中是这样。
查看当前的meta-data descriptor of @Component:
@Component({
changeDetection?: ChangeDetectionStrategy
viewProviders?: Provider[]
moduleId?: string
templateUrl?: string
template?: string
styleUrls?: string[]
styles?: string[]
animations?: any[]
encapsulation?: ViewEncapsulation
interpolation?: [string, string]
entryComponents?: Array<Type<any>|any[]>
preserveWhitespaces?: boolean
// inherited from core/Directive
selector?: string
inputs?: string[]
outputs?: string[]
host?: {[key: string]: string}
providers?: Provider[]
exportAs?: string
queries?: {[key: string]: any}
})
......以及缺少directives: []
。
或许值得注意,从上面链接的相同文档:
[...] Angular组件是指令的子集。
指令必须属于NgModule才能被其他指令,组件或应用程序使用。要指定指令是NgModule的成员,您应该在该NgModule的声明字段中列出它。
因此,指令在NgModule中声明,并且可用于在该模块中声明的所有组件,或延迟加载的子模块。