方法一: 通过abp.event触发事件和注册观察者,进行数据传递
在事件触发时调用 abp.event.trigger('change object', object);
在事件监听的component的初始化中注册监听时间,代码为:
abp.event.on('change object', object => this.apply(object))
方法二: 通过单例的service创建观察者模式,进行数据触发和传递
1,在shared\service-proxies下创建alert-change-service.ts。并在service-proxy.module.ts的providers中添加该服务对象。
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable()
export class AlertChangeService {
private subject = new Subject<any>();
// 事件触发:传入新修改的数据,把数据对象传给观察者
orderChanged(order: any): void {
this.subject.next(order);
console.log('orderChanged');
console.log(order);
}
// 观察者注册:对数据进行监听
getSubject(): Subject<any> {
console.log('getSubject');
return this.subject;
}
}
2,观察者Component进行注册。在constructor中添加服务,ngOnInit或constructor中调用注册方法getSubject() 进行注册。
将获取到的值传入方法apply中进行应用。
constructor(
injector: Injector,
private alertChangeService : AlertChangeService
) {
super(injector);
this.subjection = this.alertChangeService.getSubject()
.subscribe(object=> this.apply(object));
}
3,根据业务逻辑在合适的时间传入数据对象,触发时间。
this.alertChangeService.orderChanged(object);