angular 創建服務


一:新建服務模塊和服務文件

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, FooterComponent, SidebarComponent]
})
export class CoreModule { 
  constructor(
    @Optional() @SkipSelf() parent:CoreModule,
    ir:MatIconRegistry,
    ds:DomSanitizer
  ){
    if(parent){
      throw new Error('模塊以及存在,不能再次加載');
    }
    loadSvgsources(ir,ds);
  }
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM