Angular 6 + Popper.js(没有 jQuery)
Angular 6 + Popper.js (without jQuery)
我正在尝试设置 Popper.js 以使用 angular 5,而不使用 bootstrap 或 jquery。我尝试遵循此 https://github.com/FezVrasta/popper.js/#react-vuejs-angular-angularjs-emberjs-etc-integration,但它不完全是 angular 应用程序的 A 点到 B 点描述。
我通过 npm 安装了 Popper.js
npm install popper.js --save
然后我选择将 esm 模块捆绑到我的 angular-cli 脚本
"scripts": [
(...)
"../node_modules/popper.js/dist/esm/popper.js"
],
由于esm/popper.js 导出 Popper 变量如下。
var Popper = function () {
我想我应该像这样在 angular 模板中声明 popper 变量
declare var Popper;
唉,我运气不好。
有人知道如何正确实施吗?
首先我用 npm
安装了 Popper.js
npm install popper.js --save
然后我在angular-cli.json
中将Popper定义为外部脚本
angular-cli.json
"scripts": [
(...)
"../node_modules/popper.js/dist/esm/popper.min.js"
],
然后我在 angular 组件中导入 popper,以正确的 Angular 方式初始化它,我们就可以开始了。
组件
import Popper, {PopperOptions} from 'popper.js';
@Component({
selector: 'x',
templateUrl: './x',
styleUrls: ['./x']
})
export class X_Component implements OnInit {
@Input() popperOptions: PopperOptions = {};
@Input() popperTarget: string | Element;
private popper: Popper;
constructor(private el: ElementRef) { }
ngOnInit() {
this.popper = new Popper(
this.getTargetNode(),
this.el.nativeElement,
this.popperOptions
);
}
private getTargetNode(): Element {
if (this.popperTarget) {
if (typeof this.popperTarget === 'string') {
return document.querySelector(this.popperTarget);
} else {
return this.popperTarget;
}
} else {
return this.el.nativeElement;
}
}
}
我正在尝试设置 Popper.js 以使用 angular 5,而不使用 bootstrap 或 jquery。我尝试遵循此 https://github.com/FezVrasta/popper.js/#react-vuejs-angular-angularjs-emberjs-etc-integration,但它不完全是 angular 应用程序的 A 点到 B 点描述。
我通过 npm 安装了 Popper.js
npm install popper.js --save
然后我选择将 esm 模块捆绑到我的 angular-cli 脚本
"scripts": [
(...)
"../node_modules/popper.js/dist/esm/popper.js"
],
由于esm/popper.js 导出 Popper 变量如下。
var Popper = function () {
我想我应该像这样在 angular 模板中声明 popper 变量
declare var Popper;
唉,我运气不好。
有人知道如何正确实施吗?
首先我用 npm
安装了 Popper.jsnpm install popper.js --save
然后我在angular-cli.json
中将Popper定义为外部脚本angular-cli.json
"scripts": [
(...)
"../node_modules/popper.js/dist/esm/popper.min.js"
],
然后我在 angular 组件中导入 popper,以正确的 Angular 方式初始化它,我们就可以开始了。
组件
import Popper, {PopperOptions} from 'popper.js';
@Component({
selector: 'x',
templateUrl: './x',
styleUrls: ['./x']
})
export class X_Component implements OnInit {
@Input() popperOptions: PopperOptions = {};
@Input() popperTarget: string | Element;
private popper: Popper;
constructor(private el: ElementRef) { }
ngOnInit() {
this.popper = new Popper(
this.getTargetNode(),
this.el.nativeElement,
this.popperOptions
);
}
private getTargetNode(): Element {
if (this.popperTarget) {
if (typeof this.popperTarget === 'string') {
return document.querySelector(this.popperTarget);
} else {
return this.popperTarget;
}
} else {
return this.el.nativeElement;
}
}
}