2016-12-19 3 views
1

Я пытаюсь внедрить службу из пользовательской библиотеки, созданной с помощью йомана, в мой существующий проект ionic2. В index.ts о Lib (который будет установлен как модуль НПМ):Angular2.3 Пользовательская библиотека и инъекция зависимостей

@NgModule({ 
    imports: [ 
     CommonModule 
    ], 
    declarations: [ 
     SampleComponent, 
     SampleDirective, 
    ], 
    exports: [ 
     SampleComponent, 
     SampleDirective, 
     SamplePipe 
    ] 
}) 
export default class SampleModule { 
    static forRoot(): ModuleWithProviders { 
     return { 
      ngModule: SampleModule, 
      providers: [SampleService, SettingsSVC] 
     }; 
    } 
} 

В моем ionic2 App Я хочу, чтобы придать SettingsSVC и module.ts. Если добавить его в импорт-секции app.module он говорит:

Неожиданное значение «SettingsSVC» импортируемого модулем «AppModule»

Если нет, то я получаю ошибку консоли «поставщик не найден» ,

Тип (класс независимо от @Injectable) сам распознается и связывается, и если я добавлю тот же класс к своему разделу Ionic2 и его поставщикам в модуль, он работает с Injection.

Любые предложения о том, как заставить его работать?

ответ

1

Попробуйте это,

@NgModule({ 
    imports: [SampleModule.forRoot()], 
    declaretions: [], 
    providers: [] 
}) 
export class YourAppModule {} 
1

Когда он говорит неожиданное значение, как правило, означает, что когда-нибудь вы импортируете не были успешно импортированы.

Либо:

1- Путь SettingsSVC неправильно

2 Название SettingsSVC неправильно

3- правильный путь, но SettingsSVC не экспортируется

Так чтобы убедиться, что ваш импорт фактически импортирован SettingsSVC, введите console.log после этого и выйдите из него

import {SettingsSVC} from 'the/path/' 

console.log('SettingsSVC',SettingsSVC); 

Если журнал не определен, это определенно один из вышеперечисленных (или, может быть, что-то подобное).

И, кстати, я немного смутился, вы хотите импортировать SettingsSVC в качестве сервиса и поместить его в своих провайдеров, или вы хотите импортировать его в качестве модуля и поместить его в импорт: []?

У вас не может быть обоих!