使用Angular2的语义UI – 如何在组件中设置jQuery的侧栏设置?
我有一个Angular2应用程序,我想使用Semantic UI
。 但是,有一些jQuery
配置如下所示我必须在加载组件后运行:
$('#app .ui.sidebar') .sidebar({context:$('#app')}) .sidebar('setting', 'transition', 'overlay')
它无法通过在index.html
的head
导入js文件或将其写入组件模板内的标记来实现。 是否有“
typescript
方式”来做到这一点或如何在组件内使用js文件?
我找到了关于在指令中使用jQuery的链接 ,然后我创建了一个侧边栏指令:
import {Directive, ElementRef, OnDestroy, OnInit, Input} from '@angular/core'; import {HostListener} from "@angular/core/src/metadata/directives"; declare var $: any @Directive({ selector: '.ui.sidebar' }) export class SidebarDirective implements OnInit, OnDestroy { @Input() context: string; constructor(private el: ElementRef) { } public ngOnInit() { $(this.el.nativeElement) .sidebar({context: this.context}) .sidebar('setting', 'transition', 'overlay'); } public ngOnDestroy() { } }
然后,我在模板中使用它:
我花了相当长的时间来完成这项工作,尽管最终它很简单。 希望能节省你一些时间……
无需创建指令,您可以像使用JavaScript一样使用jQuery命令(在https://semantic-ui.com/modules/sidebar.html#/usage中描述)。 但是,必须声明“$”并且命令必须位于TypeScript函数中(“toggle()”):
import {Component} from '@angular/core'; declare var $: any; @Component({ selector: 'app-root', templateUrl: './app.component.html' }) export class AppComponent { toggle() { $('.ui.sidebar').sidebar('toggle'); } }
模板的相应部分可能如下所示:
不要忘记将jQuery添加到.angular-cli.json的脚本部分:
"scripts": [ "../node_modules/jquery/dist/jquery.js", "../node_modules/semantic-ui-css/semantic.min.js" ],
我正在使用已经依赖于jQuery 3.2.1的Semantic UI 2.2.12。 Angular版本是在node.js 6.11.2上运行的4.4.4。
import { Component, OnInit } from '@angular/core'; declare var $:any; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements OnInit { title = 'app works!'; ngOnInit(){ $('#app .ui.sidebar') .sidebar({context:$('#app')}) .sidebar('setting', 'transition', 'overlay') ; } }
- zone.js:140 Uncaught TypeError:无法读取属性’remove’
- 如何在角度2 rc4中使用jQuery自动完成
- 在Angular 2/4中使用jQuery的最简单和最短的方法
- Angular2在焦点事件上添加类
- 如何在angular cli 1.0.0-rc.0中正确包含jQuery?
- 如何将DOM附加到Angular 2组件并仍然获取封装样式
- 使用jquery查询构建器后,为什么angular2 Lifecycle Hooks无法正常工作?
- 使用jQuery datepicker和Angular 2更改事件
- 在TypeScript / Angular 4中导入jQuery插件’jquery.shorten’