我使用的是与CSS 6结合使用的实现化CSS,我的问题是输入的标签如果从某些服务加载数据,则该标签与输入的文本重叠。
在官方文档中,他们使用以下代码来解决此问题:
$(document).ready(function(){
$('select').formSelect();
});
但是如果我在ngOnInit()甚至ngAfterViewInit()中使用此代码,它将失败并显示以下错误:
错误TS2339:类型上不存在属性'formSelect' “ jQuery”。
我导入了Jquery,显然没有检测到实现脚本。 我试图从CDN以及在angular.json中导入脚本,如下所示:
"styles": [
"src/styles.css",
"node_modules/materialize-css/dist/css/materialize.css"
],
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/materialize-css/dist/js/materialize.js"]
该如何解决?看起来是角度应用程序未加载脚本,或者如果它正在加载脚本,则调用该函数还为时过早。
答案 0 :(得分:1)
那是因为您已经这样导入了jquery:
import * as $ from 'jquery';
尝试以下方法:
$: any // declare dollar sign as a field variable
它应该起作用的原因是,当您从$
导入jquery
时,它将在jquery方法中寻找formSelect()
方法,但这是一个materialize.js
方法。当您将$
声明为any
时,代码将成功编译,现在,因为您已在脚本中的脚本中添加了jquery
和materialize.js
在应用程序运行中,strong> angular.json 可以识别.formSelect()
上的$