I have a very weird situation. When followed exactly to the official Angular documentation I got error in the application.
This constructor is not compatible with Angular Dependency Injection because its dependency at index 0 of the parameter list is invalid.
This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.
Please check that 1) the type for the parameter at index 0 is correct and 2) the correct Angular decorators are defined for this class and its ancestors.
Environment versions are following:
Angular: 13.0.0-rc.2
Angular CLI: 13.0.0-rc.2
Node: 16.12.0
Package Manager: yarn 1.22.15
OS: linux x64
@angular-devkit/architect 0.1300.0-rc.2
@angular-devkit/build-angular 13.0.0-rc.2
@angular-devkit/core 13.0.0-rc.2
@angular-devkit/schematics 13.0.0-rc.2
@schematics/angular 13.0.0-rc.2
rxjs 7.4.0
typescript 4.4.4
webpack 5.60.0
original article: https://angular.io/tutorial/toh-pt4
service:
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
@Injectable({
providedIn: 'root',
})
export class HeroService {
constructor() { }
getHeroes(): Observable<Hero[]> {
const heroes = of(HEROES);
return heroes;
}
}
how I try to use it:
import { Component, OnInit } from '@angular/core';
import { Hero } from '../hero';
import { HeroService } from '../hero.service';
@Component({
selector: 'app-heroes',
template: require('./heroes.component.html')
})
export class HeroesComponent implements OnInit {
sub_title = "List of Sems Heroes"
heroes: Hero[] = []
constructor(private heroService: HeroService) { }
ngOnInit() {
this.getHeroes();
}
getHeroes(): void {
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
}
}
module file:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { APP_BASE_HREF } from '@angular/common';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HeroesComponent } from './sheroes/compheroes/heroes.component';
@NgModule({
declarations: [
AppComponent,
HeroesComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [{ provide: APP_BASE_HREF, useValue: '/' }],
bootstrap: [AppComponent]
})
export class AppModule { }
the application crashes with the error mentioned above. It is confusing me because it's very simple code which shouldn't crash. Please, any help is appreciated.
PS. I do have emitDecoratorMetadata
set to true
in the tsconfig.json
file
PS. none of the solutions discussed here worked for me: This constructor is not compatible with Angular Dependency Injection because its dependency at index 0 of the parameter list is invalid