Angular 在@NgModule providers中使用原语值时出现角度产品生成问题

Angular 在@NgModule providers中使用原语值时出现角度产品生成问题,angular,typescript,angular-cli,angular5,Angular,Typescript,Angular Cli,Angular5,我有一个服务,它有两个简单Date类型的成员变量。例如: export class SampleService { constructor( private _fromDate: Date, private _toDate: Date ) { } } providers:[{provide:Date, useValue: new Date()}] 因为Date是基本类型,对于Angular来说不是已知类型。我在我的模块@NgModule中为它提供了一个默认值。例如

我有一个服务,它有两个简单
Date
类型的成员变量。例如:

export class SampleService {

  constructor(
    private _fromDate: Date,
    private _toDate: Date
  ) { }

}
providers:[{provide:Date, useValue: new Date()}]
因为
Date
是基本类型,对于Angular来说不是已知类型。我在我的模块
@NgModule
中为它提供了一个默认值。例如:

export class SampleService {

  constructor(
    private _fromDate: Date,
    private _toDate: Date
  ) { }

}
providers:[{provide:Date, useValue: new Date()}]
我的应用程序运行良好,包括单元测试和使用
ngbuild
进行构建。但是,使用
--prod
标志时,我的生产失败,出现以下错误:

无法解析src/SampleService.ts中SampleService的所有参数:(?,?)

我对这种行为有点困惑。
提前感谢。

开发人员之所以会出现
无法解决所有参数的问题
错误的典型原因是,他们没有将服务注册为提供商,或者使用了Angular在浏览器中运行后无法使用的类型(尤其是在进行AOT编译后)

为了解决第二个问题,Angular有一个概念,即在依赖项注入中使用类型,而不是使用类型。如果遵循参考文件中的说明,在这种情况下,您将执行以下操作

创建和使用InjectionToken

import { Inject, Injectable, InjectionToken} from '@angular/core';

export const DATE_TOKEN = new InjectionToken<Date>('date');

@Injectable()
export class SampleService {
  constructor(
    private @Inject(DATE_TOKEN) _fromDate: Date,
    private @Inject(DATE_TOKEN) _toDate: Date
  ) {}
}

您可能需要使用注入令牌@DanielWStrimpel你是对的。创建注入令牌并在构造函数中显式使用@Inject(DATE)为我解决了这个问题。我可以请你把这个作为一个答案,这样我就可以接受它。谢谢。嗯。。。我不知道为什么我的问题被否决了:/谢谢你的详细解释和代码示例。帮助我消除了困惑。