创建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订阅 到改变后的值。