Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么将floatThead与Angular/TypeScript一起使用会导致错误属性“floatThead”在类型“JQuery上不存在_Jquery_Angular_Typescript_Dom_Npm - Fatal编程技术网

为什么将floatThead与Angular/TypeScript一起使用会导致错误属性“floatThead”在类型“JQuery上不存在

为什么将floatThead与Angular/TypeScript一起使用会导致错误属性“floatThead”在类型“JQuery上不存在,jquery,angular,typescript,dom,npm,Jquery,Angular,Typescript,Dom,Npm,我需要使用第三方jQuery库 我正在使用从命令行安装的引导程序和jQuery与NPM。我也用NPM安装了floatThead 在我的组件中,我有以下导入: import * as $ from 'jquery'; import 'floatThead'; 我成功地选择了如下表元素: <table class="table table-responsive table-bordered table-hover" #tableElement> @ViewChild('tableEl

我需要使用第三方jQuery库

我正在使用从命令行安装的引导程序和jQuery与NPM。我也用NPM安装了floatThead

在我的组件中,我有以下导入:

import * as $ from 'jquery';
import 'floatThead';
我成功地选择了如下表元素:

<table class="table table-responsive table-bordered table-hover" #tableElement>

@ViewChild('tableElement')
private tableElement: ElementRef;

interface floatTheadOptions {
    position?: string;
    scrollContainer?: ($table: JQuery) => JQuery;
    responsiveContainer?: ($table: JQuery) => JQuery;
    ariaLabel: ($table: JQuery, $headerCell: JQuery, columnIndex: number) => string;
    headerCellSelector?: string;
    floatTableClass?: string;
    floatContainerClass?: string;
    top?: number;
    bottom?: number;
    zIndex?: number;
    debug?: boolean;
    getSizingRow?: ($table: JQuery, $cols: JQuery, $fthCells: JQuery) => JQuery;
    copyTableClass?: boolean;
    autoReflow?: boolean;
}

interface JQuery {
    floatThead(floatTheadOptions?: floatTheadOptions): JQuery;
    floatThead(action: string): JQuery;
    trigger(action: string): JQuery;
    on(events: string, handler: (event: Event, $floatContainer: JQuery) => void|boolean): JQuery;
    on(events: string, handler: (event: Event, isFloated: boolean, $floatContainer: JQuery) => void|boolean): JQuery;
}
有人能解释一下为什么会这样吗

尝试使用import*作为“floatThead”中的floatThead


如果可能的话,在stackblitz上向我们展示这段代码,因为没有floathead的类型,所以即使包含脚本,TS也不知道您可以调用$xxx.floathead

您可以将jquery和floathead添加到angular.json文件的脚本部分,然后:

在角度导入下方添加以下行

declare let $: any;
或者,如果您已经安装了jquery类型@types/jquery,那么可以扩展jquery接口

interface JQuery
{
      floathead(options: any): JQuery;
}
然后,在组件文件的顶部

declare let $: JQuery;

floatThead现在附带了typescript类型,所以更新到最新版本就可以了

如果你想知道的话,看起来像这样:

<table class="table table-responsive table-bordered table-hover" #tableElement>

@ViewChild('tableElement')
private tableElement: ElementRef;

interface floatTheadOptions {
    position?: string;
    scrollContainer?: ($table: JQuery) => JQuery;
    responsiveContainer?: ($table: JQuery) => JQuery;
    ariaLabel: ($table: JQuery, $headerCell: JQuery, columnIndex: number) => string;
    headerCellSelector?: string;
    floatTableClass?: string;
    floatContainerClass?: string;
    top?: number;
    bottom?: number;
    zIndex?: number;
    debug?: boolean;
    getSizingRow?: ($table: JQuery, $cols: JQuery, $fthCells: JQuery) => JQuery;
    copyTableClass?: boolean;
    autoReflow?: boolean;
}

interface JQuery {
    floatThead(floatTheadOptions?: floatTheadOptions): JQuery;
    floatThead(action: string): JQuery;
    trigger(action: string): JQuery;
    on(events: string, handler: (event: Event, $floatContainer: JQuery) => void|boolean): JQuery;
    on(events: string, handler: (event: Event, isFloated: boolean, $floatContainer: JQuery) => void|boolean): JQuery;
}

也许在导入中是floatthead而不是floatthead?@RazRonen:已经试过了。不起作用:也试过了。不适合我。希望能有所帮助:非常感谢!第一条import语句生成index.d.ts35,1:此模块使用“export=”声明,并且在使用“allowSyntheticDefaultImports”标志时,只能与默认导入一起使用。第二条导入语句找不到模块“floatthead”的声明文件。对于第一个错误,请尝试在tsconfig.json的编译器选项中添加:allowSyntheticDefaultImports:true;对于第二个错误,请尝试使用:const floatThead=require'floatThead';如果它不起作用,那么我不知道如何帮助你:谢谢!然后从“jquery”以$形式导入*;与declare let$:JQuery冲突;只需在angular.json文件中添加JQuery和floatTheAdn,并从组件文件中删除导入即可,包括declare let$:any;,我没有错误。但我的应用程序仍然不受库的影响。如何测试它是否已正确集成?不删除declare let$:any;我不知道floathead,但是您应该在调用该方法时立即看到它是否有效?在调用该方法时设置断点。如果它正在通过floathead代码,那么错误就在其他地方