考虑到我有 2 个模块,分别称为 A 和 B。
假设我有这门课。它并不真正“属于”任何模块,因为它是一个普通的旧 Typescript 类,而不是一个Injectable.
class Greeter {
constructor(private greeting: string) {}
greet(name: string) {
console.log(`${greeting}, ${name}!`);
}
}
凉爽的。然后,假设模块 A 导出了一个注入Greeter
实例的组件。
@Component({ ... })
class GreetingComponent {
name: string;
constructor(private greeter: Greeter) {}
greet() { this.greeter.greet() }
}
好的。现在假设模块 B 有一个扩展Greeter
类的服务。模块 B 导入模块 A。
@Injectable({
providedIn: 'root'
})
class GentleGreeterService extends Greeter {
constructor() {
super('Hello');
}
greet(name: string) {
super.greet(name);
console.log('How are you doing?');
}
}
凉爽的。现在,每当我GreetingComponent
在模块 B 中使用时,我都希望GentleGreeterService
注入一个实例。但是,我根本没有得到任何实例,而是NullInjectorError: No provider for Greeter
. 我怎样才能解决这个问题?