danielgadot
2/19/2019 - 5:49 AM

child parent pipe comm

   <div class="prf-id-content prf-id-cfd-platform-brand-group-edit-dialog--prf-id-content">
        <prf-cfd-platform-group-form
                operation="$ctrl.resolve.operation"
                group="$ctrl.group$ | async:this"
                on-change-of-group="$ctrl.opUpdateUiGroup$.next(group)"
        >
        </prf-cfd-platform-group-form>
    </div>
export class childCtrl extends BaseController {
  /* Bindings */
  group: CfdPlatformGroup;
  onChangeOfGroup: (a: { group: CfdPlatformGroup }) => {};

  unsub$ = new Subject<void>();
  groupIn$ = new BehaviorSubject<CfdPlatformGroup>(null);
  groupOut$ = new Subject<NgModelChange>();
  groupModel = {};

  /*@ngInject */
  constructor() {
    super();
  }

  $onInit() {
    this.groupModel = createNgModelObsMediator([
      'name',
      'spread',
      'leverage',
    ],
      this.groupIn$,
      this.groupOut$,
    );
    useStream(this.streamModelOut(), this.unsub$);
  }

  $onDestroy() {
    this.unsub$.next();
    this.unsub$.complete();
  }

  onGroupChange(newGroup: CfdPlatformGroup) {
    this.groupIn$.next(newGroup);
  }

  streamModelOut() {
    return pipe(
      () => this.groupOut$,
      tap(group => this.onChangeOfGroup({ group })),
    )(null);
  }
}





export const child = {
  template,
  controller: childCtrl,
  bindings: {
    group: '<',
    onChangeOfGroup: '&',
    operation: '<',
  },
};

export default child;