javascript:提供的参数与调用目标的任何签名都不匹配

时间:2017-05-29 09:53:32

标签: javascript angular typeahead.js

我正在尝试使用typeahead.js在Angular2应用程序中实现typeahead。在typescript文件中,我添加了以下导入段。

import initTypeahead = require("../../../assets/js/init/dashboard.js");

dashboard.d.ts

declare function initTypeahead(data:any,id:any): void;
export = initTypeahead(data,id);

dashboard.js

if ('undefined' !== typeof module) {

  module.exports = function initTypeahead(data, element) {
    console.log(data);
    console.log(element);
    var _values = new Bloodhound({
      datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
      queryTokenizer: Bloodhound.tokenizers.whitespace,
      local: data
    });
    _values.initialize();

    var elt = $(element);
    elt.tagsinput({
      itemValue: 'code',
      itemText: 'value',
      typeaheadjs: {
        name: '_values',
        displayKey: 'value',
        source: _values.ttAdapter()
      }
    });
  }
}

然后在打字稿中添加以下行。

private getCities(): void {
  this.componentsService.getCriteriaValues(this.product, "city").subscribe(res => {
    initTypeahead(res.returnData, '#city'); // error at this line

  });


}

以下错误显示在 ng服务

Supplied parameters do not match any signature of call target.

非常感谢任何建议。

谢谢

1 个答案:

答案 0 :(得分:1)

如果您使用Angular-CLI:

<强>角cli.json:

"scripts": [
        "assets/js/init/dashboard.js"
 ],

您正在使用它的位置:

import '../../../assets/js/init/dashboard.js';

declare function initTypeahead(data:any,id:any): void;

首先需要从angular-cli.json中加载库,然后您可以将该代码实际导入到组件中,以便使用它的方法,变量等。