我有一个新创建的Angular应用程序,并且不确定该应用程序中的更改是如何开始表现的,但是由于某种原因,我的应用程序中每个包含依赖项参数的构造函数,Angular都要求我使用{{ 1}}。之前我不需要这样做,我看到的许多示例都不需要这种依赖关系处理。我是否已更改某些东西会导致此行为?以下是我的组件之一的示例。
编辑-我目前正在使用Angular 6.0.8
Edit -我也忘记了,当我在构造函数的参数中不使用@Inject(dependency)
时,会出现以下错误:
@Inject
Can't resolve all parameters for LoginComponent: (?, ?, ?, ?, ?).
答案 0 :(得分:0)
这可能是因为您没有在NgModule
的provider数组中声明这些服务。通常,所有服务都必须在一个模块中定义,该模块的组件将它们用作依赖项,这为它们提供了应用程序的范围。另外,在providers
中声明服务将使他们成为Angular Dependecy Injector的唯一支持者:
有两种方法可以将这些服务注入您的module
@NgModule({
providers: [ ...YourServices]
})
或者在您的service.ts文件中,添加@Injectable()
类修饰符:
// Declare that this service should be created
// by the root application injector.
@Injectable({providedIn: 'root'})