2017-06-12 67 views
0

我在app.moudule.ts离子2运行时错误无Porvider

import { NgModule, ErrorHandler } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular'; 
import { HttpModule } from '@angular/http'; 
import { MyApp } from './app.component'; 
import { IonicStorageModule } from '@ionic/storage'; 
import { InfiniteScrollModule } from 'angular2-infinite-scroll'; 

import { LoginPage } from '../pages/login/login'; 
import { AboutPage } from '../pages/about/about'; 
import { ContactPage } from '../pages/contact/contact'; 
import { HomePage } from '../pages/home/home'; 
import { TabsPage } from '../pages/tabs/tabs'; 

import { StatusBar } from '@ionic-native/status-bar'; 
import { SplashScreen } from '@ionic-native/splash-screen'; 
import { AuthServiceProvider } from '../providers/auth-service/auth-service'; 
import { JobsServiceProvider } from '../providers/jobs-service/jobs-service'; 
import { DataListProvider } from '../providers/data-list/data-list'; 


@NgModule({ 
    declarations: [ 
    MyApp, 
    LoginPage, 
    AboutPage, 
    ContactPage, 
    HomePage, 
    TabsPage 
    ], 
    imports: [ 
    BrowserModule, 
    HttpModule, 
    IonicModule.forRoot(MyApp), 
    IonicStorageModule.forRoot(), 
    InfiniteScrollModule 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    MyApp, 
    LoginPage, 
    AboutPage, 
    ContactPage, 
    HomePage, 
    TabsPage 
    ], 
    providers: [ 
    StatusBar, 
    SplashScreen, 
    {provide: ErrorHandler, useClass: IonicErrorHandler}, 
    JobsServiceProvider, 
    DataListProvider 
    ] 
}) 
export class AppModule {} 

,并在我的文件中创建一个提供程序文件名为数据list.ts

包括它在这里我想用它(home.ts),其中包括它在我的构造

import { DataListProvider } from '../../providers/data-list/data-list'; 

constructor(public navCtrl: NavController,public DataListProvider: DataListProvider) {} 

,但我不断收到这个错误,我缺少什么:

MyApp_Host.html:1 ERROR Error: No provider for DataListProvider! at injectionError (core.es5.js:1231) at noProviderError (core.es5.js:1269) at ReflectiveInjector_.throwOrNull (core.es5.js:2770) at ReflectiveInjector.getByKeyDefault (core.es5.js:2809) at ReflectiveInjector.getByKey (core.es5.js:2741) at ReflectiveInjector.get (core.es5.js:2610) at AppModuleInjector.NgModuleInjector.get (core.es5.js:3557) at resolveDep (core.es5.js:11017) at createClass (core.es5.js:10881) at createDirectiveInstance (core.es5.js:10701)

+0

您在服务类DataListProvider中添加了@Injectable()吗? –

+0

是的,我已经加了 – noor

+0

请更新问题与你的'DataListProvider.ts'代码 –

回答

0

您需要将提供程序添加到NgModule,即在供应商module.ts,

providers: [ 
    DataListProvider 
] 
+0

,你可以看到我的问题我已经在我的ngModule – noor

+0

增加了提供者你没有添加 – Sajeetharan

+0

对不起,我意识到我误解了,我添加它,但我仍然得到相同的错误 – noor

0

需要DataListProvider在app.moudule.ts添加到供应商的名单如下:

import { DataListProvider } from '../providers/data-list/data-list'; 

     providers: [ 
     StatusBar, 
     SplashScreen, 
     {provide: ErrorHandler, useClass: IonicErrorHandler}, 
     JobsServiceProvider, 
     DataListProvider 
     ] 
+0

我添加了它,但我仍然得到相同的错误 – noor

+0

你可以尝试在你的home.js页面中添加这个提供程序 @Component({*****}, templateUrl:'****' , 提供程序:[DataListProvider] }) –

+0

错误依然存在,它没有任何区别 – noor

0

首先,你需要转换“DataListProvider”到注射:

import {Injectable} from '@angular/core'; 

@Injectable() 
export class DataListProvider() { 
// Content Service 
} 

然后将其导入列表@ NgModule提供商app.module.ts:

import {DataListProvider} from '../providers/data-list/data-list'; 

providers: [ 
StatusBar, 
SplashScreen, 
{provide: ErrorHandler, useClass: IonicErrorHandler}, 
JobsServiceProvider, 
DataListProvider 
] 

如果这个解决方案并不为你工作,你可以尝试家庭成分转换为一个模块:

import {NgModule, ModuleWithProviders} from '@angular/core'; 
import {CommonModule} from '@angular/common'; 
import {RouterModule} from '@angular/router'; 

import {Home} from './home'; 

@NgModule({ 
    imports: [CommonModule, RouterModule], 
    declarations: [Home], 
    exports: [Home] 
}) 
export class HomeModule { 
    static forRoot(): ModuleWithProviders { 
    return { 
     ngModule: HomeModule 
    }; 
    } 
} 

,并导入模块插入@ NgModule:

import {HomeModule} from './home.module.ts'; 

@NgModule({ 
    declarations: [ 
    MyApp, 
    LoginPage, 
    AboutPage, 
    ContactPage, 
    TabsPage 
    ], 
    imports: [ 
    BrowserModule, 
    HttpModule, 
    IonicModule.forRoot(MyApp), 
    IonicStorageModule.forRoot(), 
    InfiniteScrollModule, 
    HomeModule.forRoot() // -> New Module 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    MyApp, 
    LoginPage, 
    AboutPage, 
    ContactPage, 
    TabsPage 
    ], 
    providers: [ 
    StatusBar, 
    SplashScreen, 
    {provide: ErrorHandler, useClass: IonicErrorHandler}, 
    JobsServiceProvider, 
    DataListProvider 
    ] 
}) 

希望这能帮助你!

相关问题