Angular 是否可以导入没有模块的组件

Angular 是否可以导入没有模块的组件,angular,angular-aot,tree-shaking,Angular,Angular Aot,Tree Shaking,我想在Angular 4.4.6中将一个组件导入到另一个组件中。这可能只是一个理论上的答案,这很好。我只是想看看有没有人在做这件事。我通常只会为组件等创建一个模块,但我真的在尝试删除任何额外的文件-试图避免文件气味 我没有真正的代码可供分享,尽管我正在想象这样的事情: @Component({ selector:'someSelector', template:`<html>some html</html>`, providers: [som

我想在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
})
@组件({
选择器:'someSelector',
模板:`some html`,
提供者:[某些服务],
声明:[someComponent]//想这样做,但我知道我做不到
})

我这样做已经在整个应用程序的一些地方引入了外部组件,比如父/子与@ViewChild()的通信,所以我明白了。我只是想知道,如果不使我需要在HTML中访问的组件全局可用,或者如果我必须创建一个模块并像平常一样导入它,这是否可能。谢谢

直到
Angular 2 RC5
,您可以将组件添加到另一个组件
指令
属性中

Angular 2 RC5
开始,只能在模块中导入组件。我认为您不会使用以下版本的Angular,因此您必须将它们导入到模块中

查看可以看到
组件
装饰器中没有声明

@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?: {...}
})
@组件({
changeDetection?:ChangeDetectionStrategy
视图提供程序?:提供程序[]
moduleId?:字符串
templateUrl?:字符串
模板?:字符串
样式URL?:字符串[]
样式?:字符串[]
动画?:任何[]
封装?:视图封装
插值?:[字符串,字符串]
entryComponents?:数组
保留空白?:布尔值
//继承自核心/指令
选择器?:字符串
输入?:字符串[]
输出?:字符串[]
主机?:{…}
提供者?:提供者[]
exportAs?:字符串
查询?:{…}
})

Angular 2 RC4支持组件
声明
提供程序
。RC5中引入了角度模块,应该完全取代模块中的此功能

我只是想知道,如果不使我需要在HTML中访问的组件全局可用,或者如果我必须创建一个模块并像平常一样导入它,这是否可能

为了在全局范围内不可用,应该在模块
声明中指定组件/指令,而不是
导出中指定。其选择器将仅在属于同一模块的组件/指令中编译