我正在尝试从使用yeoman创建的自定义库中注入一个服务到我现有的ionic2项目中。 lib的index.ts(将作为npm模块安装):
@NgModule({
imports: [
CommonModule
],
declarations: [
SampleComponent,
SampleDirective,
],
exports: [
SampleComponent,
SampleDirective,
SamplePipe
]
})
export default class SampleModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SampleModule,
providers: [SampleService, SettingsSVC]
};
}
}
在我的ionic2应用程序中,我想注入SettingsSVC和module.ts。如果我将它添加到app.module的imports-section中,它会显示:
模块'AppModule'
导入的意外值'SettingsSVC'如果没有,我收到控制台错误“找不到提供者”。
类型(类,无论@Injectable
)本身是否被识别和链接。如果我将相同的类添加到我的Ionic2应用程序及其模块中的提供程序部分,它正在使用注入。
有关如何使其发挥作用的任何建议吗?
答案 0 :(得分:1)
试试这个,
@NgModule({
imports: [SampleModule.forRoot()],
declaretions: [],
providers: []
})
export class YourAppModule {}
答案 1 :(得分:1)
当它表示意外值时,通常表示您导入的内容未成功导入。
要么:
1- SettingsSVC的路径错误
2- SettingsSVC的名称错误
3-路径正确但未导出SettingsSVC
因此,为了确保您的导入实际上是导入的SettingsSVC,请在其后面输入console.log并将其注销
import {SettingsSVC} from 'the/path/'
console.log('SettingsSVC',SettingsSVC);
如果日志显示未定义,那么它绝对是上述之一(或者类似的东西)。
顺便说一句,我有点困惑,您是否想要将SettingsSVC作为服务导入并将其放入您的提供程序中,或者您是否要将其作为模块导入并将其放入导入中:[]?
你们两个都不可能!