I am trying to use a directive on one of my Angular components. Please help resolve the following error:
core.mjs:6494 ERROR Error: NG0201: No provider for t found
at F (core.mjs:254:11)
at kn (core.mjs:3411:21)
at Module.Fc (core.mjs:14433:12)
at n.ɵfac [as factory] (environment-permission.directive.ts:9:44)
at mi (core.mjs:3574:44)
at Jv (core.mjs:10332:27)
at Ah (core.mjs:9661:5)
at Module.id (core.mjs:14578:9)
at no (asset-list.component.html:37:5)
at Dp (core.mjs:9632:9)
Directive code:
@Directive({
selector: '[appEnvPermission]'
})
export class EnvironmentPermissionDirective {
private permission$ = new BehaviorSubject<string>(null);
@Input()
set appEnvPermission(permission: string) {
this.permission$.next(permission);
}
constructor(
templateRef: TemplateRef<any>,
viewContainer: ViewContainerRef,
configService: ConfigurationService,
permissionService: PermissionService,
) {
combineLatest([configService.getEnvironment(), this.permission$ ]).subscribe({
next: ([ env, permission ]) => {
viewContainer.clear();
if (permissionService.hasEnvPermission(env.name, permission)) {
viewContainer.createEmbeddedView(templateRef);
}
},
error: err => {
viewContainer.clear();
// viewContainer.createEmbeddedView(templateRef);
},
});
}
}
How the directive is currently being used in the AssetListComponent:
<div [appEnvPermission]="'asset.download'" *ngIf="!isAssetView()" class="my-auto">
and the AssetRevisionsComponent:
<div [appEnvPermission]="'asset.download'" class="my-auto mx-3" *ngIf="configService.getCurrentEnvironment().upload">
Component belongs to AssetsModule:
@NgModule({
declarations: [
AssetListComponent,
AssetRevisionsComponent,
...
],
imports: [
SharedModule,
...
],
})
export class AssetsModule { }
AssetsModule imports SharedModule, which declares and exports the EnvironmentPermissionDirective as follows:
@NgModule({
declarations: [
...
EnvironmentPermissionDirective
],
imports: [
...
],
exports: [
...
EnvironmentPermissionDirective
],
providers: [
DatePipe,
DecimalPipe,
CreateConfigSetRequestService,
CreateMasterSetRequestService,
ReplicateApiService,
ModelPersistenceService,
SchedulePersistenceService,
CreateScheduleRequestService,
CanDeactivateGuard,
],
})
export class SharedModule { }
What am I missing?