全球Ionic2 / Angular2模块

时间:2016-12-15 08:26:02

标签: angular typescript ionic2

我目前正在使用Ionic2开发移动应用,我遇到了一个问题。基本上,我想要实现的是以我可以创建全局模块(或通用模块[可以被任何应用程序使用])的方式划分我的应用程序,这对于特定于应用程序的模块是完全独立的。

我构建了这样的代码:

src
-> app
-> assets
-> configs
-> globals [ this is where i put the global modules ]
--> modules
---> user
----> user-controller.ts
----> module.ts
--> services
... etc.
--> module.ts (this bootstraps everything, included later on)
-> pages
.. etc.

所以基本上,在这个结构中,我可以创建全局有用的模块,只需将它拉到任何地方。

但是我遇到了这个错误:

inline template:164:9 caused by: No provider for UserController!

我担心,如果正确导入模块,我应该看到没有错误。 现在,我的问题是:

  1. 对于ionic2 / angular2 app,上述结构是否可行/可行?
  2. 考虑到我在下面做的进口,我哪里可能出错?
  3. 感谢您的回复。

    相关代码:

    globals/providers/auth.ts

    import { Injectable} from "@angular/core";
    import { UserController } from '../modules/user/user-controller';
    
    
    @Injectable()
    export class Auth {
        constructor(private userCtrl:UserController) {
    
        }
    }
    

    app/app.module.ts

    import { NgModule } from '@angular/core';
    
    
    /**
     * Globals
     */
    import { GlobalModule } from '../globals/module';
    
    @NgModule({
        declarations: [
        ],
        imports: [
        ],
        bootstrap: [IonicApp],
        entryComponents: [
        ],
        providers: [
            GlobalModule,
        ]
    })
    export class AppModule {
    }
    

    globals/module.ts

    import {NgModule} from '@angular/core';
    
    import { UserModule } from './modules/user/module';
    
    @NgModule({
        /* import sub modules */
        imports: [
            UserModule
        ],
    
        /* import components */
        declarations: [],
        exports: [],
    
        /* import services */
        providers: [
            Auth
        ]
    })
    export class GlobalModule {
    }
    

    globals/modules/user/module.ts

    import {NgModule} from '@angular/core';
    
    /* Import sub modules */
    
    import { UserController } from './user-controller';
    
    /* Import services */
    
    @NgModule({
        /* import sub modules */
        imports: [
        ],
    
        /* import components */
        declarations: [
        ],
    
        exports: [
        ],
    
        /* import services */
        providers: [
            UserController
        ]
    })
    export class UserModule {
    }
    

    globals/modules/user/user-controller.ts

    import {Injectable} from "@angular/core";
    
    @Injectable()
    export class UserController {
        public users = [];
    
        constructor() {
        }
    
        createUser( user ){
        }
    
        removeUser( user ){
        }
    }
    

1 个答案:

答案 0 :(得分:0)

@NgModule({
    declarations: [
    ],
    imports: [
        GlobalModule             //<--- you need to import it here
    ],
    bootstrap: [IonicApp],
    entryComponents: [
    ],
    providers: [
       // GlobalModule,           //<<<--- not needed here
    ]
})
export class AppModule {
}