我使用'jhipster'创建了项目,它是Angular 4
项目。它使用Webpack
和'yarn'。我为我的要求安装了metisMenu
,它位于package.json
文件中。我在metisMenu
和'webpack'中定义了vendor.ts
,但它显示错误jQuery(...).metisMenu is not a function
。
我第一次使用Webpack
。在Webpack
中定义它的确切方法是什么?
答案 0 :(得分:3)
我直接在必需的metisMenu
导入Component
,它解决了我的问题。
答案 1 :(得分:1)
感谢Jeeten Parmar我能够使用我引用它的组件中的以下代码来解决这个问题:
import 'metismenu';
...
// you can call this inside ngAfterViewInit() in your component
jQuery('#side-menu').metisMenu();
希望这有帮助
答案 2 :(得分:0)
如果使用角度> 2的角度cli>> 4,你可以像这样在.angular-cli.json中声明:
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/metismenu/dist/metisMenu.js"
[... others jquery plugin ...]
],
在你的组件中,你像这样声明jquery:
declare let $: any;
您必须使用ngAfterViewInit等待" dom ready"事件。最后,你有一个像这样的组件:
import {Component, ElementRef, AfterViewInit} from '@angular/core';
declare let $: any;
@Component({
[...]
ngAfterViewInit() {
this.menuElement = this._elementRef.nativeElement.querySelector('#side-menu');
(<any>$(this.menuElement)).metisMenu();
}
要小心,如果你像这样导入jquery:
import * as $ from 'jquery';
$
是jquery的新实例,因此MetisMenu不会在里面实现,jquery对象会被全局的新实例替换
享受:)