未捕获(承诺):没有空闲的提供者

时间:2016-11-15 14:32:44

标签: angular typescript

我在AngularJS 2应用程序中使用ng2-idle。我能够在项目的node_modules文件夹中获取ng2-idle软件包。我正在尝试将其导入我的一个组件,如下所示:

Dashboard.component.ts:

import { Ng2IdleModule } from 'ng2-idle/index';
import { DEFAULT_INTERRUPTSOURCES } from 'ng2-idle/index';
import { Idle } from 'ng2-idle/idle';

//location and router
import { Router } from '@angular/router';


import { AppComponent } from '../../app.component';

@Component({

    selector: 'dashboard',
    templateUrl: './dashboard.component.html'
})

export class DashboardComponent {
    private showBusyIndicator: boolean = false;
    private idleState: string = 'Not started.';
    private timedOut: boolean = false;
    constructor( @Host() @Inject(forwardRef(() => AppComponent)) private app: AppComponent,
        private idle: Idle) {//throws an error when I include it in the constructor

    }

}

当我这样做时,我收到以下错误:

message:Uncaught (in promise): Error: Error in ./DashboardComponent class DashboardComponent_Host - inline template:0:0 caused by: No provider for Idle!
Error: No provider for Idle!
    at NoProviderError.BaseError [as constructor] (http://localhost:4200/main.bundle.js:7103:34)
    at NoProviderError.AbstractProviderError [as constructor] (http://localhost:4200/main.bundle.js:62865:16)
    at new NoProviderError (http://localhost:4200/main.bundle.js:62896:16)
    at ReflectiveInjector_._throwOrNull (http://localhost:4200/main.bundle.js:101281:19)
    at ReflectiveInjector_._getByKeyDefault (http://localhost:4200/main.bundle.js:101309:25)
    at ReflectiveInjector_._getByKey (http://localhost:4200/main.bundle.js:101272:25)
    at ReflectiveInjector_.get (http://localhost:4200/main.bundle.js:101081:21)
    at AppModuleInjector.NgModuleInjector.get (http://localhost:4200/main.bundle.js:63774:52)
    at ElementInjector.get (http://localhost:4200/main.bundle.js:101472:48)
    at ElementInjector.get (http://localhost:4200/main.bundle.js:101472:48)
source: 
 stack trace:null

当我在AppModule中导入它时,出现以下错误:

metadata_resolver.js:227Uncaught Error: Unexpected value 'Ng2IdleModule' imported by the module 'AppModule'(…)

我没有在app.module.ts中导入模块。这就是我收到此错误的原因吗?你能让我知道如何解决这个问题。

2 个答案:

答案 0 :(得分:6)

根据ng2 idle示例应用程序,您需要使用.forRoot()导入模块。

https://github.com/HackedByChinese/ng2-idle-example#set-up-your-application-module

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MomentModule,
    NgIdleKeepaliveModule.forRoot()
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

答案 1 :(得分:0)

使用从'@ ng-idle / core'导入的{NgIdleModule}代替NgIdleKeepaliveModule。 参考:https://github.com/HackedByChinese/ng2-idle-example