Adding Angular material and consuming in workspace throws inject error

165 Views Asked by At

I started with Angular Workspace,

1. Project 1
2. Project 2
3. SharedLib //The sharedlibrary

in Project1 and Project2, I imported the sharedLib.

In SharedLib, I created a component with Material Button Component.

@NgModule({
  declarations: [
    HelloComponentComponent
  ],
  imports: [
     CommonModule,
     MatButtonModule
  ],
  exports: [
    HelloComponentComponent
  ]
})
export class SamplesharedlibraryModule { }

HelloComponent.html

 

<button mat-button color="primary">Primary</button>

Now getting this error

Error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with EnvironmentInjector#runInContext. Find more at https://angular.io/errors/NG0203

1

There are 1 best solutions below

1
On BEST ANSWER

You might be missing the setting in tsconfig. The dependencies of shared libraries should be added as a path in the tsconfig of the consuming application. In your case either Project1 or Project2.

like this,

{
  "paths": {
    "@angular/*": [
      "../.././node_modules/@angular/*"
    ]
  }
}

also you should have separate tsconfig file for shared libraries.