Angualr + abp 观察者模式

方法一: 通过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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值