在Angular2+中实现全局变量的最简单方法是创建一个服务,并将其注入到所有需要访问该变量的组件中。 首先创建一个服务:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class SharedService {
sharedVariable: any;
constructor() { }
}
在该服务中创建全局变量sharedVariable。
在需要使用该变量的组件中注入该服务,并使用全局变量:
import { Component, OnInit } from '@angular/core';
import { SharedService } from '../shared.service';
@Component({
selector: 'app-component-one',
template: `
Component One
`
})
export class ComponentOneComponent implements OnInit {
constructor(private sharedService: SharedService) { }
ngOnInit() { }
updateSharedVariable() {
this.sharedService.sharedVariable = "Hello from Component One";
}
}
在上面的代码中,我们使用了SharedService来访问sharedVariable。在updateSharedVariable()方法中,我们更新了sharedVariable的值。
现在,在需要访问全局变量的另一个组件中,也注入SharedService,并使用sharedVariable:
import { Component, OnInit } from '@angular/core';
import { SharedService } from '../shared.service';
@Component({
selector: 'app-component-two',
template: `
Component Two
{{sharedVariable}}
`
})
export class ComponentTwoComponent implements OnInit {
constructor(private sharedService: SharedService) { }
ngOnInit() { }
get sharedVariable() {
return this.sharedService.sharedVariable;
}
}
现在,我们可以在ComponentTwoComponent中访问sharedVariable。
请注意,当在Angular应用程序中使用全局变量时,可能会导致代码耦合,例如,在一个组件中更改了该变量,而没有在其他组件中更新该变量,可能