本文实例讲述了Angular2使用路由自定义弹出组件toast操作。分享给大家供大家参考,具体如
本文实例讲述了Angular 2使用路由自定义弹出组件toast操作。分享给大家供大家参考,具体如下:
原理:
使用Angular2的命名路由插座,一个用来显示app正常的使用,一个用来显示弹出框,
<router-outlet name='apps'></router-outlet>
<router-outlet name='popup'></router-outlet>
浏览器的导航栏中则这样显示
http://127.0.0.1:4200/(popup:toast//apps:login)
路由配置
const rootRoute: Routes = [
{
path: 'lists',
component: Lists,
outlet: 'apps',
children: [ ... ]
},
{
path: 'toast',
component: Toast,
outlet: 'popup',
},
...
];
toast内容
<div class="box">
<div class="toast-box">
<p class="toast-title">提示</p>
<div class="toast-content">
<ng-container *ngIf="toastParams.img">
<img src="{{toastParams.img}}" class="toast-content-img">
</ng-container>
<ng-container *ngIf="toastParams.title">
<p class="toast-content-p">{{toastParams.title}}</p>
</ng-container>
</div>
</div>
</div>
ts
在ngOninit函数中获取显示的参数即可
this.toastParams = this.popupSVC.getToastParams();
创建用来跳转至popup路由的服务,例如popup.service
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
@Injectable()
export class PopupService {
private toastParams;
private loadingParams;
constructor(
private router: Router
) { }
toast(_params) {
this.toastParams = _params;
let _duration;
if (_params.duration) {
_duration = _params.duration;
} else {
_duration = 500;
}
const _outlets = { 'popup': 'toast' };
this.router.navigate([{ outlets: _outlets }]);
setTimeout(() => {
const _outlets2 = { 'popup': null };
this.router.navigate([{ outlets: _outlets2 }]);
}, _duration);
}
getToastParams() {
return this.toastParams;
}
}
使用:
一、在app.module.ts中将服务导进来,注册
import { PopupService } from './svc/popup.service';
@NgModule({
imports: [
...
],
declarations: [
...
],
providers: [
PopupService,
...
],
bootstrap: [AppComponent]
})
二、在使用的test.ts中导入
import { PangooService } from './svc/pangoo.service';
constructor(
private popupSVC: PopupService,
) { }
三、在html中定义一个函数
<div (click)="test()"></div>
四、调用
test(){
this.popupSVC.toast({
img: '弹出图片地址!',
title: '弹出消息内容!',
duration: 2000, //toast多久后消失,默认为500ms
});
}
Angular
2
路由
自定义
弹出组件
toast