我想将组件导入Angular 4.4.6中的另一个组件。这可能最终只是一个理论上的答案,这很好。刚想到我会到这儿来看看有没有人这样做。我通常只是为组件等创建一个模块,但我真的试图删除任何额外的文件 - 试图避免文件气味。
我没有真正的代码可以分享,虽然我想的是这样的事情:
@Component({
selector:'someSelector',
template:`<html>some html</html>`,
providers: [someService],
declarations: [someComponent] //wanting to do this but I know I can't
})
我这样做已经在整个应用程序的几个地方引入了外部组件,比如父/子与@ViewChild()的通信,所以我明白了。只是想知道这是否可能,如果没有我需要访问HTML全局可用的组件,或者我必须创建一个模块并像平常一样导入它。谢谢!
答案 0 :(得分:2)
Angular 2 RC4支持组件declarations
和providers
。在RC5中引入了Angular模块,并且应该完全取代模块中的这个功能。
只是想知道这是否可能,如果没有我需要全局可用的HTML访问组件,或者我必须创建一个模块并像平常一样导入它。
为了全局不可用,应在模块declarations
中指定组件/指令,而不是exports
。它的选择器只能在属于同一模块的组件/指令中编译。
答案 1 :(得分:1)
直到Angular 2 RC5
,您可以将组件添加到另一个组件directives
属性中。
从Angular 2 RC5
开始,组件只能在模块中导入。我想您不会使用Angular的以下版本,因此您必须将它们导入模块。
查看Documentation,您可以看到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?: {...}
providers?: Provider[]
exportAs?: string
queries?: {...}
})