Consider that I have 2 modules called A and B.
Let's say I have this class. It doesn't really "belong" to any module since it's a plain old Typescript class rather than an Injectable.
class Greeter {
constructor(private greeting: string) {}
greet(name: string) {
console.log(`${greeting}, ${name}!`);
}
}
Cool. Then, let's say module A exports a component that injects a Greeter
instance.
@Component({ ... })
class GreetingComponent {
name: string;
constructor(private greeter: Greeter) {}
greet() { this.greeter.greet() }
}
Nice. Now let's say module B has a service that extends the Greeter
class. Module B imports module A.
@Injectable({
providedIn: 'root'
})
class GentleGreeterService extends Greeter {
constructor() {
super('Hello');
}
greet(name: string) {
super.greet(name);
console.log('How are you doing?');
}
}
Cool. Now, whenever I use GreetingComponent
in module B, I expect a GentleGreeterService
instance to be injected. However, I get no instance at all, but rather NullInjectorError: No provider for Greeter
. How can I fix this?