0
我使用Ionic2目前正在开发移动应用程序,我遇到了一个问题。基本上,我想实现的是划分我的应用程序中,我可以创建全局模块(或通用模块[可通过任何应用程式使用])是为应用程序特定模块完全独立的方式。全球Ionic2/Angular2模块
我我的结构这样的代码:
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!
我个人而言,如果处理得当模块的进口,我看不出有任何错误。 现在,我的问题是:
- 对于ionic2/angular2应用程序,上述结构是可行/可行的吗?
- 鉴于我在下面做了进口,在那里我能在哪里呢?
感谢您的答复。
相关的代码:
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){
}
}
这是快。小心添加上下文?因为这是工作,如果我删除对Auth的UserController依赖。我的意思是,如果我删除UserController依赖项,我仍然可以在应用程序的其他部分使用Auth。 感谢您的快速响应! :) – Jan
我不属于IONIC,所以没有提到我的解释。但是在通用中,模块可以导出和导入。这里有一个GlobalModule,它应该在AppModule中导入。在Angular2上下文中,'Providers'数组提供''服务'依赖关系,并且您将模块作为依赖项传递,这没有任何意义。如果你从'Auth'中删除'UserController',它应该可以工作,因为你已经在GlobalModule中声明了它,或者它变成了独立的实体。不确定它是如何工作的,如果你从'Auth'中移除它并在'providers'数组中传递'GlobalModule'。 – micronyks
现在很明显。非常感谢你! – Jan