解决依赖注入报错
问:
angular组件依赖注入报错:0203: 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
. 请问如何解决
答:
这个错误是由于在组件的非注入上下文中调用了inject()方法引起的。
解决方案:
-
确保在组件的构造函数或注入工厂函数中调用inject()方法,以确保在正确的注入上下文中。
-
如果您的组件使用了@ViewChild/@ContentChild注解,则需要确保在ngAfterViewInit生命周期钩子函数中调用inject()方法。
-
如果您使用了ngOnInit()钩子函数,在该函数中使用@Inject()装饰器代替inject()方法来进行依赖注入。
示例代码:
import { Component, Inject } from '@angular/core';
import { MyService } from './my-service';
@Component({
selector: 'app-my-component',
template: '<div>{{ service.sayHello() }}</div>'
})
export class MyComponent {
constructor(@Inject(MyService) private service: MyService) {}
}
在这个例子中,我们通过@Inject()装饰器来注入MyService。
希望这可以帮助你解决问题。
最后
如果还未解决,可能是你的项目中有多个node_modules导致angular错误的引导。
可使用以下解决方案:
在项目的
属性内加上以下代码:tsconfig.app.json
` 文件的
`compilerOptions
"paths":( "@angular/*":[“./node_modules/@angular/*" ] }
文章评论