我正在学习Angular 7。我目前对Angular中的引导设计和标记角度组件和模块的元数据对象用法很清楚。但是,我仍然没有看到角度模块不是空类的示例或情况。
所以,我目前不知道:
答案 0 :(得分:1)
我认为主要区别在于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的工作方式。
如果您编写自定义模块,那么您当然可以按照常规方式做。
初始化模块的一种方法是forRoot
convention:
在这里,您基本上创建了具有给定配置的单例:
(摘自链接)
src / app / core / user.service.ts(构造函数)
constructor(@Optional() config: UserServiceConfig) {
if (config) { this._userName = config.userName; }
}
src / app / core / core.module.ts(forRoot)
static forRoot(config: UserServiceConfig): ModuleWithProviders {
return {
ngModule: CoreModule,
providers: [
{provide: UserServiceConfig, useValue: config }
]
};
}
src / app / app.module.ts(导入)
import { CoreModule } from './core/core.module';
/* . . . */
@NgModule({
imports: [
BrowserModule,
ContactModule,
CoreModule.forRoot({userName: 'Miss Marple'}),
AppRoutingModule
],
/* . . . */
})
export class AppModule { }