Angular App仅允许构造函数中的依赖项使用@Inject

时间:2019-07-19 18:36:17

标签: angular typescript

我有一个新创建的Angular应用程序,并且不确定该应用程序中的更改是如何开始表现的,但是由于某种原因,我的应用程序中每个包含依赖项参数的构造函数,Angular都要求我使用{{ 1}}。之前我不需要这样做,我看到的许多示例都不需要这种依赖关系处理。我是否已更改某些东西会导致此行为?以下是我的组件之一的示例。

编辑-我目前正在使用Angular 6.0.8

Edit -我也忘记了,当我在构造函数的参数中不使用@Inject(dependency)时,会出现以下错误: @Inject

Can't resolve all parameters for LoginComponent: (?, ?, ?, ?, ?).

1 个答案:

答案 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'})