我已经通过npm下载了该模块https://github.com/skeymeulen/swangular,并希望将其与TypeScript一起使用。现在,我正在努力以正确的方式包括依赖项。就像GitHub上的READ.me告诉我,我将模块注入到我的应用程序中是这样的:
var app = angular.module("app", ['ui.bootstrap', 'swangular']);
我的控制器如下所示:
class SimpleController {
static readonly $inject = ["$scope", "$http", "$uibModal", "swangular", ProjectsService.serviceName, AttributesService.serviceName];
constructor(
private $scope: ng.IScope,
private $http: ng.IHttpService,
private $uibModal: ng.ui.bootstrap.IModalService,
private projectsSvc: IProjectsService,
private attributesSvc: IAttributesService,
private swangular: any) { }
...
}
由于我没有@types的swangular,所以只使用
any
作为类型。接下来,我尝试这样称呼它:
this.swangular.swal('Swangular Demo', 'Great demo, right?', 'question');
我收到以下错误:
TypeError:this.swangular.swal不是函数
我包含了以下必要的js文件:
<script type="text/javascript" src="../node_modules/sweetalert2/dist/sweetalert2.js"></script>
<script type="text/javascript" src="../node_modules/swangular/swangular.js"></script>
我也没有像在
import * as angular from 'angular';
这样的js文件开头导入依赖项之间的区别。也许我使用了错误的方式?感谢您的帮助。
最佳答案
$inject
注释和构造函数参数不匹配。
static readonly $inject = ["$scope", "$http", "$uibModal", "swangular", ProjectsService.serviceName, AttributesService.serviceName];
constructor(
private $scope: ng.IScope,
private $http: ng.IHttpService,
private $uibModal: ng.ui.bootstrap.IModalService,
private projectsSvc: IProjectsService,
private attributesSvc: IAttributesService,
private swangular: any) { }
它们应该以相同的顺序排列,但不应该相同。 Angular无法确定第4个
$inject
元素("swangular"
)与第6个构造函数参数(private swangular: any
)匹配。关于javascript - 以正确的方式在TypeScript + AngularJS中导入/注入(inject)模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44109688/