Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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模块应该是空的JavaScript模块吗?_Javascript_Angular_Angular7 - Fatal编程技术网

Angular模块应该是空的JavaScript模块吗?

Angular模块应该是空的JavaScript模块吗?,javascript,angular,angular7,Javascript,Angular,Angular7,我现在正在学习。我目前很清楚Angular中的引导设计以及标记Angular组件和模块的元数据对象使用。然而,我还没有看到angular模块不是空类的示例或案例 所以,我现在想知道: Angular模块只是静态地设计来配置和组织相关的东西 在角模块中包含动态逻辑代码(可能是用模块类的构造函数编写的)不是最佳实践吗 我认为主要区别在于Angular组件、模块和服务使用Angular包中的装饰器 例如,@Component()执行以下操作: * Component decorator allow

我现在正在学习。我目前很清楚Angular中的引导设计以及标记Angular组件和模块的元数据对象使用。然而,我还没有看到angular模块不是空类的示例或案例

所以,我现在想知道:

  • Angular模块只是静态地设计来配置和组织相关的东西
  • 在角模块中包含动态逻辑代码(可能是用模块类的构造函数编写的)不是最佳实践吗

我认为主要区别在于Angular组件、模块和服务使用Angular包中的装饰器

例如,
@Component()
执行以下操作:

 * Component decorator allows you to mark a class as an Angular component and provide additional
 * metadata that determines how the component should be processed, instantiated and used at
 * runtime.
这是您可以直接查找的源代码

你传递到这里的东西也是非常特定的角度。除此之外,不应该有太大的区别

如果与需要初始化的组件进行接口,则不应使用JS构造函数。它将比ngOnInit执行得稍早,并且可能会导致问题,因为这是angular的工作方式

如果您编写自定义模块,那么您当然可以按常规方式进行操作

初始化模块的一种方法是 在这里,您基本上创建了一个具有给定配置的单例: (摘自链接)

src/app/core/user.service.ts(构造函数)

src/app/core/core.module.ts(forRoot)

src/app/app.module.ts(导入)


所以我真的很想知道,是否有像ngOnInit这样的东西提供给或可用于角模块,而不是角组件。Itt被称为forRoot公约。许多模块都会这样做,下面是文档:将用它更新答案
constructor(@Optional() config: UserServiceConfig) {
  if (config) { this._userName = config.userName; }
}
static forRoot(config: UserServiceConfig): ModuleWithProviders {
  return {
    ngModule: CoreModule,
    providers: [
      {provide: UserServiceConfig, useValue: config }
    ]
  };
}
import { CoreModule } from './core/core.module';
/* . . . */
@NgModule({
  imports: [
    BrowserModule,
    ContactModule,
    CoreModule.forRoot({userName: 'Miss Marple'}),
    AppRoutingModule
  ],
/* . . . */
})
export class AppModule { }