Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provider not found if CanActivateChild Guard is only declare within the module. #81

Closed
lengcai opened this issue Oct 1, 2016 · 2 comments

Comments

@lengcai
Copy link

lengcai commented Oct 1, 2016

This error goes away if the DumGuard is added to app.providers.ts , but this defeat the purpose of the module which can be configured to be loaded lazily.

features/sync/dum-guard.service.ts

@Injectable()
export class DumGuard implements CanActivateChild, CanActivate {
  constructor(private router: Router) {}

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    return true;
  }

  canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    return true;
  }
}

features/sync/index.ts

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild(routes)
  ],
  declarations: [
    SyncComponent,
    ChildComponent
  ],
  providers: [
    DumGuard
  ]
})
export class SyncModule {}

features/sync/sync.routing.ts

export const routes: Routes = [
  {
    path: '',
    component: SyncComponent,
    children: [
      {
        path: '',
        canActivateChild: [ DumGuard ],
        children: [
          { path: '', component: ChildComponent }
        ]
      }
    ]
  }
];
error_handler.js:52 Error: Uncaught (in promise): Error: No provider for DumGuard!
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:429:31)
    at eval (webpack:///./~/zone.js/dist/zone.js?:406:13)
    at ZoneDelegate.invoke (webpack:///./~/zone.js/dist/zone.js?:203:28)
    at Object.onInvoke (webpack:///./~/@angular/core/src/zone/ng_zone_impl.js?:44:37)
    at ZoneDelegate.invoke (webpack:///./~/zone.js/dist/zone.js?:202:34)
    at Zone.run (webpack:///./~/zone.js/dist/zone.js?:96:43)
    at eval (webpack:///./~/zone.js/dist/zone.js?:462:57)
    at ZoneDelegate.invokeTask (webpack:///./~/zone.js/dist/zone.js?:236:37)
    at Object.onInvokeTask (webpack:///./~/@angular/core/src/zone/ng_zone_impl.js?:35:37)
    at ZoneDelegate.invokeTask (webpack:///./~/zone.js/dist/zone.js?:235:42)
  -------------   Elapsed: 9 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at eval (webpack:///./~/zone.js/dist/zone.js?:406:13)
    at eval (webpack:///./~/@angular/router/src/router.js?:505:25)
    at ZoneDelegate.invoke (webpack:///./~/zone.js/dist/zone.js?:203:28)
  -------------   Elapsed: 0 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at SafeSubscriber.eval [as _error] (webpack:///./~/zone.js/dist/zone.js?:406:13)
    at SafeSubscriber.__tryOrUnsub (webpack:///./~/rxjs/Subscriber.js?:223:16)
    at SafeSubscriber.error (webpack:///./~/rxjs/Subscriber.js?:184:26)
  -------------   Elapsed: 8 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at eval (webpack:///./~/zone.js/dist/zone.js?:462:17)
    at ZoneDelegate.invokeTask (webpack:///./~/zone.js/dist/zone.js?:236:37)
    at Object.onInvokeTask (webpack:///./~/@angular/core/src/zone/ng_zone_impl.js?:35:37)
  -------------   Elapsed: 0 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at eval (webpack:///./~/zone.js/dist/zone.js?:462:17)
    at ZoneDelegate.invokeTask (webpack:///./~/zone.js/dist/zone.js?:236:37)
    at Object.onInvokeTask (webpack:///./~/@angular/core/src/zone/ng_zone_impl.js?:35:37)
  -------------   Elapsed: 14 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at ZoneAwarePromise.then (webpack:///./~/zone.js/dist/zone.js?:536:17)
    at RuntimeCompiler._compileComponents (webpack:///./~/@angular/compiler/src/runtime_compiler.js?:173:49)
    at RuntimeCompiler._compileModuleAndComponents (webpack:///./~/@angular/compiler/src/runtime_compiler.js?:80:37)
    at RuntimeCompiler.compileModuleAsync (webpack:///./~/@angular/compiler/src/runtime_compiler.js?:71:21)
  -------------   Elapsed: 3 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at eval (webpack:///./~/zone.js/dist/zone.js?:462:17)
    at ZoneDelegate.invokeTask (webpack:///./~/zone.js/dist/zone.js?:236:37)
    at Object.onInvokeTask (webpack:///./~/@angular/core/src/zone/ng_zone_impl.js?:35:37)
  -------------   Elapsed: 0 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at eval (webpack:///./~/zone.js/dist/zone.js?:462:17)
    at ZoneDelegate.invokeTask (webpack:///./~/zone.js/dist/zone.js?:236:37)
    at Object.onInvokeTask (webpack:///./~/@angular/core/src/zone/ng_zone_impl.js?:35:37)
  -------------   Elapsed: 3 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at eval (webpack:///./~/zone.js/dist/zone.js?:462:17)
    at ZoneDelegate.invokeTask (webpack:///./~/zone.js/dist/zone.js?:236:37)
    at Object.onInvokeTask (webpack:///./~/@angular/core/src/zone/ng_zone_impl.js?:35:37)
  -------------   Elapsed: 0 ms; At: Sun Oct 02 2016 00:45:37 GMT+0800 (MYT)   -------------  
    at Object.onScheduleTask (webpack:///./~/zone.js/dist/long-stack-trace-zone.js?:76:18)
    at ZoneDelegate.scheduleTask (webpack:///./~/zone.js/dist/zone.js?:213:49)
    at Zone.scheduleMicroTask (webpack:///./~/zone.js/dist/zone.js?:150:39)
    at scheduleResolveOrReject (webpack:///./~/zone.js/dist/zone.js?:460:14)
    at resolvePromise (webpack:///./~/zone.js/dist/zone.js?:424:21)
    at eval (webpack:///./~/zone.js/dist/zone.js?:406:13)
    at webpackJsonpCallback (http://localhost:3000/index.js:21:29)
    at http://localhost:3000/0.index.js:1:1
@qdouble
Copy link
Owner

qdouble commented Oct 1, 2016

@lengcai this seems to be more of Angular support question or issue rather than anything wrong in particular with the seed project...gitter https://gitter.im/angular/angular or the angular github may be more appropriate if you can reproduce the issue on plunker.

@qdouble qdouble closed this as completed Oct 1, 2016
@brandonroberts
Copy link
Contributor

@lengcai I think this is a bug that should be filed. If you can reproduce the issue in a plunker, you should file it over at https://github.com/angular/angular/issues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants