1 Alerts
该组件用于给用户操作提供反馈信息或者提供一些警告信息
2 用法
2.1 下载ngx-bootstrap依赖
参考博文:点击前往
2.2 在模块级别导入AlertModule模块
技巧01:由于AlertModule是一个工具组件,在实际开发中一般都是在共享模块进行导入的
import { BrowserModule } from ‘@angular/platform-browser‘; import { NgModule } from ‘@angular/core‘; import { AppComponent } from ‘./app.component‘; import { TestComponent } from ‘./test/test.component‘; import {FormsModule, ReactiveFormsModule} from ‘@angular/forms‘; import { AccordionModule, AlertModule } from ‘ngx-bootstrap‘; @NgModule({ declarations: [ AppComponent, TestComponent ], imports: [ BrowserModule, FormsModule, ReactiveFormsModule, AccordionModule.forRoot(), AlertModule.forRoot() ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
2.3 在需要用Alerts组件的地方直接使用alert选择器即可
<alert type="success"> hello boy </alert>
2.4 效果展示
3 实例讲解
3.1 基本使用结构
Alert组件可以包含任意长度的文本内容,还可以包含一个按钮来控制alert组件的隐藏;alert组件通过制定type属性的值来设置样式,type属性的值只能是success、info、warning、danger中的一个
3.1.1 alert组件样式
可以利用alert-*来给alert组件内的其他元素制定样式,aler-*样式列表如下
3.1.2 alert组件基本结构
<alert type="类型名称"> 内容 </alert>
<div class="panel panel-primary"> <div class="panel-heading">alerts组件基本结构</div> <div class="panel-body"> <alert type="success"> <strong>success </strong> <span>使用了success样式的alert组件</span> </alert> <alert type="info"> <strong>info </strong> <span>使用了info样式的alert组件</span> </alert> <alert type="warning"> <strong>warning </strong> <span>使用了warning样式的alert组件</span> </alert> <alert type="danger"> <strong>danger </strong> <span>使用了danger样式的alert组件</span> </alert> </div> <div class="panel-footer">2018-1-7 16:53:48</div> </div>
HTML
import { Component, OnInit } from ‘@angular/core‘; @Component({ selector: ‘app-test‘, templateUrl: ‘./test.component.html‘, styleUrls: [‘./test.component.scss‘] }) export class TestComponent implements OnInit { constructor() { } ngOnInit() { } }
TS
3.2 自动匹配颜色
为alert组件内部的其它元素添加alert-link类去自动根据alert组件的类型进行颜色匹配
技巧01:如果alert组件内部的元素不指定alert-link类,会自动进行颜色匹配
技巧02:如果alert组件内部的其他元素制定了alert-link类,不仅会进行颜色自动匹配还会进行加粗设置
<div class="panel panel-primary"> <div class="panel-heading">alerts组件基本结构</div> <div class="panel-body"> <alert type="success"> <strong class="alert-link">success </strong> <span>使用了success样式的alert组件</span> <a class="alert-link" href="https://valor-software.com/ngx-bootstrap/#/alerts">alert组件官方文档</a> </alert> <alert type="info"> <strong>info </strong> <span>使用了info样式的alert组件</span> <a class="alert-link" href="https://valor-software.com/ngx-bootstrap/#/alerts">alert组件官方文档</a> </alert> <alert type="warning"> <strong>warning </strong> <span>使用了warning样式的alert组件</span> <a class="alert-link" href="https://valor-software.com/ngx-bootstrap/#/alerts">alert组件官方文档</a> </alert> <alert type="danger"> <strong>danger </strong> <span>使用了danger样式的alert组件</span> <a class="alert-link" href="https://valor-software.com/ngx-bootstrap/#/alerts">alert组件官方文档</a> </alert> </div> <div class="panel-footer">2018-1-7 16:53:48</div> </div>
HTML
import { Component, OnInit } from ‘@angular/core‘; @Component({ selector: ‘app-test‘, templateUrl: ‘./test.component.html‘, styleUrls: [‘./test.component.scss‘] }) export class TestComponent implements OnInit { constructor() { } ngOnInit() { } }
TS
3.3 包含其它元素
alert元素可以包含其它的HTML元素
<div class="panel panel-primary"> <div class="panel-heading">alert包含其他HTML元素</div> <div class="panel-body"> <alert type="success"> <h2>包含其它元素</h2> <div>我是div元素</div> </alert> </div> <div class="panel-footer">2018-1-7 20:48:28</div> </div>
HTML
import { Component, OnInit } from ‘@angular/core‘; @Component({ selector: ‘app-test‘, templateUrl: ‘./test.component.html‘, styleUrls: [‘./test.component.scss‘] }) export class TestComponent implements OnInit { constructor() { } ngOnInit() { } }
TS
3.4 输入属性dismissible
当alert组件的dismissible属性值为真时就会出现一个关闭按钮,点击就可以关闭alert组件
技巧01:在typescript中利用Object.assign实现对象的复制
参考博文:点击前往
<div class="panel panel-primary"> <div class="panel-heading">输入属性diamissible</div> <div class="panel-body"> <alert type="success" dismissible="true"> <span class="alert-link">Dismissible</span> <span>当alert组件的dismissible属性值为真时就会出现一个关闭按钮,点击就可以关闭ale rt组件</span> </alert> <button class="btn-primary" (click)="onDismissible()">dismissible功能切换</button> <span *ngIf="dismissible">dismissible功能开启<button class="btn-info" (click)="onReset()">Reset</button></span> <span *ngIf="!dismissible">dismissible功能关闭</span> <alert *ngFor="let alert of alerts;" [dismissible]="dismissible"> <span class="alert-link">{{alert.title}}</span> <span>{{alert.content}}</span> </alert> </div> <div class="panel-footer">2018-1-7 20:55:33</div> </div>
HTML
import { Component, OnInit } from ‘@angular/core‘; @Component({ selector: ‘app-test‘, templateUrl: ‘./test.component.html‘, styleUrls: [‘./test.component.scss‘] }) export class TestComponent implements OnInit { alerts: Alert[]; dismissible = false; constructor() { } ngOnInit() { this. alerts = [ new Alert(‘标题01‘, ‘内容01‘), new Alert(‘标题02‘, ‘内容02‘), new Alert(‘标题03‘, ‘内容03‘) ]; } onDismissible() { this.dismissible = !this.dismissible; } onReset() { this.alerts = this.alerts.map((alert: Alert) => Object.assign(new Alert(‘‘, ‘‘), alert)); } } export class Alert { private _title; private _content; constructor(title, content) { this._title = title; this._content = content; } get title() { return this._title; } set title(value) { this._title = value; } get content() { return this._content; } set content(value) { this._content = value; } }
TS
3.5 在alert组件内动态显示HTML代码
alert组件内部可以放其它的元素,如果我们想在alert组件内部动态地添加HTML代码,只需要利用ts将HTML代码进行封装即可
技巧01:在TS中的HTML代码需要利用DomSanitizer服务进行处理
技巧02:innerHtml和innerText的区别
innerHTML可以识别HTML标签和汉字
innerText会将所有的当成文本处理,而且不能识别汉字
技巧03:DomSanitizer服务可以实现跨站脚本攻击
参考博文:点击前往
<div class="panel panel-primary"> <div class="panel-heading">在alert组件内部显示HTML代码</div> <div class="panel-body"> <div *ngFor="let alert of alerts;"> <alert type="success" [type]="alert.type"> <span [innerHtml]="alert.content"></span> </alert> </div> </div> <div class="panel-footer">2018-1-7 22:05:05</div> </div>
HTML
import { Component, OnInit, SecurityContext } from ‘@angular/core‘; import { DomSanitizer} from ‘@angular/platform-browser‘; @Component({ selector: ‘app-test‘, templateUrl: ‘./test.component.html‘, styleUrls: [‘./test.component.scss‘] }) export class TestComponent implements OnInit { alerts: Alert[]; dismissible = false; constructor( private domSanitizer: DomSanitizer ) { } ngOnInit() { this.alerts = [ new Alert(‘success‘, `<strong>内容01</strong>`), new Alert(‘info‘, `<i>内容02</i>`), new Alert(‘warning‘, ‘内容03‘) ]; this.alerts = this.alerts.map((alert: Alert) => new Alert(alert.type, this.domSanitizer.sanitize(SecurityContext.HTML, alert.content))) } } export class Alert { private _type; private _content; constructor(type, content) { this._type = type; this._content = content; } get type() { return this._type; } set type(value) { this._type = value; } get content() { return this._content; } set content(value) { this._content = value; } }
TS
3.6 动态改变alert组件的内容
通过一个单机按钮来动态改变alert组件的内容,用一个列表来存储alert组件的内容
技巧01:*ngIf指令的使用
官方文档:点击前往
<div class="panel panel-primary"> <div class="panel-heading">动态显示alert组件的内容</div> <div class="panel-body"> <button *ngIf="index < messages.length - 1; else elseblock" class="btn-info" (click)="onAdd()">改变alert组件的内容</button> <ng-template #elseblock> <button class="btn-warning" (click)="index = 0">Reset</button> </ng-template> <alert>{{messages[index]}}</alert> </div> <div class="panel-footer">2018-1-7 22:38:03</div> </div>
HTML
import { Component, OnInit, SecurityContext } from ‘@angular/core‘; import { DomSanitizer} from ‘@angular/platform-browser‘; @Component({ selector: ‘app-test‘, templateUrl: ‘./test.component.html‘, styleUrls: [‘./test.component.scss‘] }) export class TestComponent implements OnInit { messages: string[]; index = 0; constructor( ) { } ngOnInit() { this.messages = [ ‘重庆市大足区‘, ‘重庆市沙坪坝区‘, ‘重庆市合川区‘ ]; } onAdd() { if (this.index !== this.messages.length - 1) { this.index++; } } }
3.7 定时消失
待更新......2018-1-7 22:57:39
原文地址:https://www.cnblogs.com/NeverCtrl-C/p/8232750.html