創建service.module.ts
import { NgModule, ModuleWithProviders } from '@angular/core'; import { SomeSharedService } from './global.service'; export { SomeSharedService } @NgModule() export class ServicesModule { static forRoot():ModuleWithProviders{ return { ngModule:ServicesModule, providers:[SomeSharedService] } } }
新建global.service.ts
import { Injectable } from '@angular/core' import { BehaviorSubject } from 'rxjs'; @Injectable() export class SomeSharedService { public globalVar:BehaviorSubject<any[]> = new BehaviorSubject([]); public pageLimit = 10; }
在組件1中引入服務並獲取值
... import { SomeSharedService } from 'src/app/services/global.service'; ..... constructor( private someSharedService: SomeSharedService ) { } ngOnInit() { this.someSharedService.globalVar.subscribe(d=>{ this.clumb = d; }) } .... }
在組件2中引入服務並設置值
import { SomeSharedService } from 'src/app/services/global.service'; .... ... constructor( private someSharedService$:SomeSharedService ) {} getProjectName(id:Number){ this.someSharedService$.globalVar.next(['我的項目',{id:id,name:res.data.project_name}] } .... }
這里設置了新的值,在組件1訂閱 到改變后的值。