在Angular中,可以使用服务来在所有组件之间共享应用程序变量。下面是一个简单的示例:
首先,创建一个名为data.service.ts
的服务文件,并在其中定义一个共享变量:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class DataService {
sharedData: string = "";
constructor() { }
}
然后,在要使用共享变量的组件中,将DataService
服务注入到构造函数中,并使用该服务来访问和修改共享变量:
import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-component1',
template: `
Component 1
`
})
export class Component1Component {
constructor(public dataService: DataService) { }
}
import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-component2',
template: `
Component 2
Shared data: {{ dataService.sharedData }}
`
})
export class Component2Component {
constructor(public dataService: DataService) { }
}
最后,将这两个组件添加到app.module.ts
中,并在模板中使用它们:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { Component1Component } from './component1.component';
import { Component2Component } from './component2.component';
import { DataService } from './data.service';
@NgModule({
imports: [BrowserModule, FormsModule],
declarations: [AppComponent, Component1Component, Component2Component],
providers: [DataService],
bootstrap: [AppComponent]
})
export class AppModule { }
现在,当在Component1
中输入数据时,它将更新共享变量,并且可以在Component2
中进行访问和显示。
请注意,通过将DataService
服务提供给root
,它将成为应用程序的单例,因此在所有组件之间共享的数据将保持一致。