我已经通过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/

10-09 16:21