一:新建服务模块和服务文件
ng g module services --spec=false ng g service services/quote --spec=false
二:在quote.service.ts中,可以用快捷方式新建初始服务。
ng-service
三:在services.module.ts中设置全局服务。
解释:
forRoot()的目的是在应用程序中使用单例服务。
forRoot()的意义是仅有一个由ModuleWithProviders导出的service实例。
如果没有forRoot()方法,如果你在模块的providers里面添加一个service并在多处用到这个module,那么你在这个应用的不同级都会实例化这个service。用forRoot(),它会创建这个service的新实例
import { NgModule,ModuleWithProviders } from ‘@angular/core‘; import { QuoteService } from ‘./quote.service‘; @NgModule() export class ServicesModule { static forRoot():ModuleWithProviders{ return { ngModule:ServicesModule,providers:[QuoteService] } } }
四:在项目核心模块中引入服务模块。core/core.module.ts
ServicesModule.forRoot()
import { NgModule,Optional,SkipSelf } from ‘@angular/core‘; import { HeaderComponent } from ‘./header/header.component‘; import { FooterComponent } from ‘./footer/footer.component‘; import { SidebarComponent } from ‘./sidebar/sidebar.component‘; import { SharedModule } from ‘../shared/shared.module‘; import { MatIconRegistry } from ‘@angular/material‘; import { DomSanitizer } from ‘@angular/platform-browser‘; import { loadSvgsources } from ‘../util/util.svg‘; import { AppRoutingModule } from ‘../app.route.module‘; import { ServicesModule } from ‘../services/services.module‘; @NgModule({ imports: [ SharedModule,AppRoutingModule,ServicesModule.forRoot() ],exports:[ SharedModule,HeaderComponent,FooterComponent,SidebarComponent ],declarations: [HeaderComponent,SidebarComponent] }) export class CoreModule { constructor( @Optional() @SkipSelf() parent:CoreModule,ir:MatIconRegistry,ds:DomSanitizer ){ if(parent){ throw new Error(‘模块以及存在,不能再次加载‘); } loadSvgsources(ir,ds); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。