我目前正在尝试实现一个Angular指令来管理语义UI下拉菜单。首先,我通过npm使用Angular(4.3.3),jQuery(3.2.1)和Semantic UI(2.2.13)。Angular 4的语义UI下拉
为了整合他们,我已经重新配置的角度,cli.json为了进口这些库:
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/semantic-ui/dist/semantic.min.js"
]
声明语义UI指令:
import {Directive, ElementRef, AfterViewInit} from "@angular/core";
import * as jQuery from "jquery";
@Directive({
selector: "[sm-dropdown]"
})
export class SemanticDropdownDirective implements AfterViewInit {
constructor(private dropdown: ElementRef) {}
ngAfterViewInit(): void {
jQuery(this.dropdown.nativeElement).dropdown();
}
}
,并给它一试:
<div class="ui selection dropdown" sm-dropdown>
<i class="dropdown icon"></i>
<div class="menu">
<div
class="item"
*ngFor="let item of [10, 20, 30, 50, 100]"
[attr.data-value]="item"
>
{{ item }}
</div>
</div>
</div>
的问题是,它总是与结束:
ERROR TypeError: WEBPACK_IMPORTED_MODULE_1_jquery(...).dropdown is not a function
我注意到在创建浏览器控制台下拉(抛出错误后)的工作原理:
$('.dropdown').dropdown()
我已经google一下,并试图很多替代品,但没有成功...
有什么想法?
你安装'jQuery'的打字,也许它搞乱了webpack构建..? –
不,我只是简单地通过npm安装jQuery,这都是 – egeloen