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 { }
In App.routing the 'resolve' requires an array.
This: resolve: AssetResolver
should be: resolve: [AssetResolver]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With