对于 ionic 3 - 跨应用程序共享变量的最佳实践是什么? 例如,如果我有一个泛型变量或泛型数组,并且我希望它在应用程序中的所有源文件中可用,那么最好的方法是什么?
我应该使用提供程序并创建 getter 函数,还是有一些更好和简单的方法来做到这一点,例如 c 中的头文件?
我会遵循核心功能模型的 Angular 文档。这意味着为应用程序范围的单例服务(提供程序(创建一个通用模块。导入这些服务并将其添加到providers
列表的位置。 然后只需在AppModule
中导入CoreModule
,例如将其添加到imports
列表中。
核心模块:
import { NgModule } from '@angular/core';
import { IonicModule } from 'ionic-angular';
import { FooService } from './services/foo-service';
import { BarService } from './services/bar-service';
export {
FooService,
BarService
}
@NgModule({
imports: [
IonicModule
],
providers: [
FooService,
BarService
]
})
export class CoreModule{}
通过添加
export {
FooService,
BarService
}
您可以从一个文件导入组件中的所有服务,如下所示:
import { FooService, BarService } from '../../core/core-module';
并像往常一样在constructor
中注入和使用它们:
constructor(private fooService: FooService, private barService:BarService){}
someFunctionCallingServiceFunction(){
this.fooService.data; // You can access properties
this.fooService.someFunction(); // and functions
}
我使用的文件结构:
--core/
core.module.ts
--services/
foo.service.ts
bar.service.ts
示例服务:
import { Injectable } from '@angular/core';
@Injectable()
export class FooService {
data:string;
private hiddenData:string; // Can only be used internally
constructor(){ }
someFunction(){
// Does something...
}
// Can only be used internally
private somePrivateFunction(){
// Does something else...
}
}