ionic 3 - What is the best practice to share variables across the application

前端 未结 1 582
清歌不尽
清歌不尽 2021-01-25 18:29

For ionic 3 - what is the best practice to share variables across the application? For example, if I have a generic variable or generic array and I want it to be available acros

相关标签:
1条回答
  • 2021-01-25 19:20

    I would follow the Angular documentation for the Core-feature model. Which means creating a common module for your application wide singleton services (providers). Where you import those services and add them to the providers-list. Then simply import the CoreModule in the AppModule, eg add it to the imports-list.

    Core-module:

    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{}
    

    By adding the

    export {
        FooService,
        BarService
    }
    

    you can import all the services in your components from one file, like this:

    import { FooService, BarService } from '../../core/core-module';
    

    And inject and use them as usual in the constructor:

    constructor(private fooService: FooService, private barService:BarService){}
    
    someFunctionCallingServiceFunction(){
        this.fooService.data; // You can access properties
        this.fooService.someFunction(); // and functions 
    }
    

    The file structure I use:

    --core/
      core.module.ts
      --services/
        foo.service.ts
        bar.service.ts
    

    Example service:

    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...
        }
    }
    
    0 讨论(0)
提交回复
热议问题