Angular2.3自定义库和依赖注入

时间:2016-12-19 17:34:13

标签: angular typescript npm ionic2

我正在尝试从使用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应用程序及其模块中的提供程序部分,它正在使用注入。

有关如何使其发挥作用的任何建议吗?

2 个答案:

答案 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作为服务导入并将其放入您的提供程序中,或者您是否要将其作为模块导入并将其放入导入中:[]?

你们两个都不可能!