import {Injectable,Injector} from '@angular/core';
import { ComponentLoaderFactory } from '../component-loader/component-loader.factory';
import {MessageComponent} from './message.component';
import {ComponentLoader} from '../component-loader/component-loader.class';
@Injectable()
export class MessageService{
constructor(private _clf:ComponentLoaderFactory,private _injector:Injector){
this.loader=this._clf.create<MessageComponent>();
}
private loader:ComponentLoader<MessageComponent>
private createMessage(t,c,duration=2000){
this.loader.attch(MessageComponent).to('body');
const opts = {
msgType: t,
payload:c
};
const ref = this.loader.create(opts);
ref.changeDetectorRef.markForCheck();
ref.changeDetectorRef.detectChanges();
let self=this;
let st = setTimeout(() => {
self.loader.remove(ref);
}, duration);
}
public info(payload,duration?) {
this.createMessage('info',payload,duration);
}
public success(payload,duration?) {
this.createMessage('success',payload,duration);
}
public error(payload,duration?) {
this.createMessage('error',payload,duration);
}
public warning(payload,duration?) {
this.createMessage('warning',payload,duration);
}
}
message.module
最后,增加message.module.ts。记得要把动态创建的组件添加到entryComponents数组中。
import {NgModule} from '@angular/core';
import { CommonModule } from '@angular/common';
import {MessageComponent} from './message.component';
import {MessageService} from './message.service';
import {ComponentLoaderFactory} from '../component-loader/component-loader.factory';
@NgModule({
imports:[CommonModule],
declarations:[MessageComponent],
providers:[MessageService,ComponentLoaderFactory],
entryComponents:[MessageComponent],
exports:[MessageComponent]
})
export class MessageModule{
}
使用方法
注入MessageService,调用API使用Message组件。
this._msgService.success('成功了!');
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持黑区网络。
