Angular 4 with angular-cli - 找不到带 AOT 的第 3 方提供商

Angular 4 with angular-cli - doesn't find 3rd party provider with AOT

我正在使用 angular-cli 1.2.6 构建一个小型 Angular 4 应用程序。在开发过程中一切正常,并且使用 ng build --dist 成功构建。但是在 运行 时间,找不到我用作服务的名为 toastr 的第 3 方供应商之一 - 注入时它是 undefined。以下是我将其包含到项目中的方式:

在.angular-cli.json

...

"scripts": [
    ...
    "../node_modules/toastr/build/toastr.min.js"
  ],

...

我在单独的文件中创建了一个注入令牌:

import {InjectionToken} from '@angular/core';
import {IToastr} from './toastr.model';

export let TOASTR_TOKEN = new InjectionToken<IToastr>('toastr');

然后在 app.module.ts 中,我将其作为提供者包括在内:

import {TOASTR_TOKEN} from './common/tokens';

let toastr = window['toastr'];

...
providers: [
    ...
    {provide: TOASTR_TOKEN, useValue: toastr}
],
...

好的,经过一番研究,我找到了解决问题的方法。挽救这一天的是导出我用来分配给提供商的 useValue 属性 的变量:

import {TOASTR_TOKEN} from './common/tokens';

export let toastr = window['toastr'];

...
providers: [
    ...
    {provide: TOASTR_TOKEN, useValue: toastr}
],

...