Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 我的模块没有';无法从app.module中查看组件_Angular - Fatal编程技术网

Angular 我的模块没有';无法从app.module中查看组件

Angular 我的模块没有';无法从app.module中查看组件,angular,Angular,我有自己的模块(FrameworkModule),在import内部app.module 这是我的模块: @NgModule({ imports: [ CommonModule ], declarations: [ CheckFieldComponent, ], exports: [ CheckFieldComponent, ], }) export class FrameworkModule { } 如果我使用了app.module中的任何组件

我有自己的模块(
FrameworkModule
),在
import
内部
app.module

这是我的模块:

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: [
    CheckFieldComponent,
  ],
  exports: [
    CheckFieldComponent,
  ],
})
export class FrameworkModule { }
如果我使用了
app.module
中的任何组件,那么
FrameworkModule
中的组件将看不到<代码>应用程序模块当然包括我的
框架模块

例如: 在组件
xyz
(在我的
FrameworkModule
中定义)中,我正在使用
zyx
组件(在
app.module
中定义)-然后
xyz
没有看到
zyx
组件

错误是:

无法绑定到“xyz”,因为它不是“zyx”的已知属性


这是故意的。如果要使用模块中的组件,则必须导入此模块。FeatureModule不会(也不能)导入AppModule,因此不能使用AppModule中定义的组件

常见的解决方法是创建第三个模块,该模块可以导入到AppModule和FeatureModule中

例如:

 AppModule
   imports: ChildModule1

 ChildModule1
   imports: -

 => AppModule can use components from ChildModule1 (and AppModule)
 => ChildModule1 can use only components from ChildModule1

 =====

 AppModule
   imports: ChildModule1

 ChildModule1
   imports: AppModule

 => Not possible, circular dependency

 =====

 AppModule
   imports: ChildModule1, SharedModule1

 ChildModule1
   imports: SharedModule1

 SharedModule1
   imports: -

 => AppModule can use components from ChildModule1 and SharedModule1 (and AppModule)
 => ChildModule1 can use only components from SharedModule1 (and ChildModule1)

在任何不只是hello world示例的Angle应用程序中,最好避免在应用程序模块中声明组件

Christoph建议的是最好的方法,让自己成为一个共享模块,在其中可以声明所有组件。这看起来可能有很多工作要做,但并没有那么多,只是角度有多大。AppModule是根目录,它包含所有其他内容,您无法将其导入任何位置,否则最终将产生循环依赖关系

我正在构建一个大型应用程序,而应用程序模块本身只声明应用程序组件,没有其他组件


祝你好运

嗯,我还能说些什么来解释。。如果在CheckFieldComponent.html中使用“”,则显示错误。另一个组件在app.module中,你能给我举个例子吗?我有很多组件,我无法将它们全部重新制作成模块化的AKS,例如@Christoph_Lütjen,但正如我所说的,我有很多组件,我无法将它们重写成模块。我的解决方案是什么?一个模块并从项目导入所有组件?一个选项是创建一个“SharedComponentsModule”,并将大部分组件从应用程序模块移动到此新模块。但我建议创建更小的模块。这并不需要太多的工作(假设您有一个IDE,它可以为您修复损坏的导入提供一些支持)。或者删除您的子模块并将所有内容移动到AppModule(不推荐)。好的。嗯,所有组件的路径都是一样的,但我只是将它们的声明移动到共享模块?是的,您不必实际移动组件,只需在共享模块内声明它们。