我正在尝试将npm模块“ ajv”导入我的Ionic 2(Angular 2)项目。 (https://epoberezkin.github.io/ajv/)
我运行了“ npm install ajv --save”,然后对我的app.modules.js文件进行了以下更改:
import { Ajv } from 'ajv';
...
providers : [
Ajv,
...
]
但是,当我编译时,出现错误:
'Ajv' only refers to a type, but is being used as a value here.
c:/Users/me/Documents/Ionic/MyApp/src/app/app.module.ts
有没有更好的方法来引入该库?
最佳答案
NgModule
中的providers数组可与@Injectable
组件或其他功能类似的“提供者”或“服务”一起使用。该库似乎不符合该设计。
您可能真正想要做的就是在应用程序组件中而不是在AppModule
中使用导入。导入是指“符号”的简单ES6样式import
,然后直接在代码中使用。
因此,例如example.component.ts:
import { Component } from '@angular/core';
import { Ajv } from 'ajv';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent {
myMethod() {
// Just use Ajv here
}
}
无需将其放入装饰器数组中。
如果您想以“类似服务的方式”使用导入的第三方库,则一定要将其包装为
@Injectable
服务,但使用量将与上面的示例基本相同。