'Angular 11: NullInjectorError: No provider for AssetResolver_Factory! even with @Injectable and provided in App.module

I'm simply trying to add a resolver to my angular app, but I'm getting the NullInjectorError: No provider for AssetResolver_Factory! error.

I've tried a bunch of different options for the providers array but nothing is working. The resolver is provided in root and every SO question I've looked at says to provide it in root with @Injectable() or to add it to the providers array in app.module

Angular version 11.0.1

I've tried providers: [AssetResolver]

I've tried providers: { provide: MatDialogRef, useValue: {}, AssetResolver }

I've tried providers: [{ provide: MatDialogRef, useValue: {}}, { provide: AssetResolver, useValue: {} }]

Nothing works.

Standard resolver generated by Angular CLI, unchanged

import { Injectable } from '@angular/core';
import {
  Router, Resolve,
  RouterStateSnapshot,
  ActivatedRouteSnapshot
} from '@angular/router';
import { Observable, of } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class AssetResolver implements Resolve<boolean> {
  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
    return of(true);
  }
}

App.module.ts

@NgModule({
  declarations: [
    //decs
  ],
  imports: [
    //imports
  ],
  providers: [{
    provide: MatDialogRef,
    useValue: {},
  }, AssetResolver],
  bootstrap: [AppComponent]
})
export class AppModule { }

App.routing

const routes: Routes = [
  {
    path: '',
    component: HomeComponent
  },
  {
    path: 'wizard',
    component: WizardComponent,
    resolve: AssetResolver
  }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }



Solution 1:[1]

In App.routing the 'resolve' requires an array. This: resolve: AssetResolver should be: resolve: [AssetResolver]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Falleris