Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

angular

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 { }

like image 604
jm123456 Avatar asked Oct 22 '25 04:10

jm123456


1 Answers

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

like image 133
Falleris Avatar answered Oct 23 '25 19:10

Falleris