Angular2中Bootstrap界面库ng-bootstrap详解


Posted in Javascript onOctober 18, 2016

准备 Angular 2 环境

ng-bootstrap 是基于 Angular 2 的, 因此需要先准备 Angular 2 的环境。

使用 ng-bootstrap

下载 ng-bootstrap

ng-bootstrap 使用 bootstrap 4.0 alpha2 , 因此需要先下载 bootstrap , 推荐使用 npm 包的形式:

npm install bootstrap@4.0.0-alpha.2 --save

接着下载 ng-bootstrap , 同样使用 npm 包的形式:

npm install @ng-bootstrap/ng-bootstrap --save

修改 systemjs.config.js

现在需要修改一下 systemjs.config.js 文件, 让 SystemJS 能够正确加载 ng-bootstrap :

// map tells the System loader where to look for things
var map = {
 'app':      'dist', // 'dist',
 '@angular':     'node_modules/@angular',
 'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
 'rxjs':      'node_modules/rxjs',
 // add ng-bootstrap location map 
 '@ng-bootstrap':    'node_modules/@ng-bootstrap'
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
 'app': { main: 'main.js', defaultExtension: 'js', format: 'amd' },
 'rxjs': { defaultExtension: 'js' },
 'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
 // add ng-bootstrap package config
 '@ng-bootstrap/ng-bootstrap': { main: 'index.js', defaultExtension: 'js' }
};

修改 index.html

index.html 文件也要修改一下, 把 bootstrap 的样式表关联进来:

<link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css"/>

修改 app.component.ts

还需要修改一下 app.component.ts 文件, 导入 ng-bootstrap 的指令:

import { Component, OnInit } from '@angular/core';
import { HTTP_PROVIDERS } from '@angular/http';
import { provideRouter, ROUTER_DIRECTIVES } from '@angular/router';
// import ng-bootstrap directives
import { NGB_DIRECTIVES, NGB_PRECOMPILE } from '@ng-bootstrap/ng-bootstrap';

import { routes } from './app.routes';

@Component({
 //moduleId: module.id,
 selector: 'app',
 providers: [ HTTP_PROVIDERS ],
 templateUrl: 'dist/app.component.html',
 styleUrls: ['dist/app.component.css'],
 // ng-bootstrap required precompile directives
 precompile: [NGB_PRECOMPILE],
 // add ng-bootstrap directives to app
 directives: [
  ROUTER_DIRECTIVES, NGB_DIRECTIVES
 ],
 pipes: []
})
export class AppComponent implements OnInit {

 ngOnInit() {
 }

}

ng-bootstrap 以指令 (directive) 的形式提供组件, 方便在 html 视图中使用, 选择器 (selector) 使用同一的前缀 ngb , 类名则统一使用 Ngb 前缀。

接下来就可以使用 ng-bootstrap 的组件了, 接下来以 NgbAlert 为例说明 ng-bootstrap 的用法。

NgbAlert 的 selector 是 ngb-alert , 支持的 Input 有 dismissible 和 type , Output 有 close 。

接下来看一个 NgbAlert 的例子:

<p>
 <ngb-alert [dismissible]="false">
 <strong>Warning!</strong> Better check yourself, you're not looking too good.
 </ngb-alert>
</p>

显示效果如下:

Angular2中Bootstrap界面库ng-bootstrap详解

再来一个稍微复杂一点儿的, 在 app.component.ts 文件中添加下面的代码:

export class AppComponent implements OnInit {

 alert: IAlert[];

 ngOnInit() {
  this.alert = [
   {
    id: 1,
    type: 'success',
    message: 'This is an success alert',
   },
   {
    id: 2,
    type: 'info',
    message: 'This is an info alert',
   },
   {
    id: 3,
    type: 'warning',
    message: 'This is a warning alert',
   },
   {
    id: 4,
    type: 'danger',
    message: 'This is a danger alert',
   }
  ];
 }

 closeAlert(alert: IAlert) {
  const index: number = this.alerts.indexOf(alert);
  this.alerts.splice(index, 1);
 }
}

interface IAlert {
 id: number;
 type: string;
 message: string;
}

在对应的 html 文件中添加 *ngFor 指令, 绑定 alerts 数组:

<p *ngFor="let alert of alerts">
 <ngb-alert
  [type]="alert.type"
  (close)="closeAlert(alert)">\{\{ alert.message }}
 </ngb-alert>
</p>

现在得到的效果如下图所示:

Angular2中Bootstrap界面库ng-bootstrap详解

ng-bootstrap 还有更多的组件, 就不一一列举了。

总结

实现 ng-bootstrap 的人还是原来做 angular-ui 的那些人, 可以说配方还是原来的配方, 但是这味道么就跟原来有很大的不同了, 完全切换到了 Angular2 的风格。

不过总的来说, ng-bootstrap 的推出将会极大的推进 Angular 2 在实际项目中的应用, 而不只是停留在 demo 阶段, 因为 AngularJS 1.x 时期, 很多项目都是以 AngularJS + UI-Bootstrap 为基础的, 现在有了 Angular 2 的 ng-bootstrap , 相信已经由很多人蠢蠢欲动了吧!以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
javascript数组的扩展实现代码集合
Jun 01 Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
JS实现QQ图片一闪一闪的效果小例子
Jul 31 Javascript
javascript中打印当前的时间实现思路及代码
Dec 18 Javascript
js形成页面的一种遮罩效果实例代码
Jan 04 Javascript
初识Node.js
Mar 20 Javascript
jquery中toggle函数交替使用问题
Jun 22 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
Mar 08 Javascript
js前端解决跨域问题的8种方案(最新最全)
Nov 18 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
微信小程序 教程之事件
Oct 18 #Javascript
微信小程序 教程之模板
Oct 18 #Javascript
微信小程序 教程之列表渲染
Oct 18 #Javascript
微信小程序 教程之条件渲染
Oct 18 #Javascript
微信小程序 教程之数据绑定
Oct 18 #Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 #Javascript
微信小程序 教程之WXML
Oct 18 #Javascript
You might like
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
非主流的textarea自增长实现js代码
2011/12/20 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
构造方法和其他方法的区别
2016/04/26 面试题
干部考核评语
2014/04/29 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
加强作风建设心得体会
2014/10/22 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
2015年工会工作总结
2015/03/30 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL