Angulaire 2 EventEmitter de Radiodiffusion suivant( ... ) d'une fonction de Service

À ma connaissance, le .toRx().abonnez-vous( ... ) la fonction est destinée à RECEVOIR des messages et la .fonction next() est destiné à la DIFFUSION des messages de

Dans ce plnkr ( http://plnkr.co/edit/MT3xOB?p=info ) , vous appelez l' .toRx().abonnez-vous( ... ) la fonction à partir d'un objet de données qui semble être défini/dérivé à l'origine du modèle:

@Component({
  selector : 'child-cmp',
  template : '',
  inputs : ['data']
})
class ChildCmp {
  afterViewInit() {
    this.data.toRx().subscribe((data) => {
      console.log('New data has arrived!', data);
    });
  }
}

Dans ce plnkr ( http://plnkr.co/edit/rNdInA?p=preview ) , vous appelez l' .toRx().abonnez-vous( ... ) la fonction à partir d'un evt l'objet et de son émetteur de fonction (en provenance du Service injecté dans le composant du constructeur)

@Component({
  selector : 'parent-cmp',
  template : ''
})
class ParentCmp {
  constructor(evt: EventService) {
    evt.emitter.subscribe((data) => 
      console.log("I'm the parent cmp and I got this data", data));
  }
}

Est possible pour la DIFFUSION de prendre place dans une fonction de Service elle-même alors que dans le même temps, est-il possible pour le Composant de RECEVOIR le message sans compter sur un retour de Service de l'objet ou de Modèle d'objet de données de la chaîne de son .toRX().abonnez-vous( ... ) la fonction invokation?

import {Injectable, EventEmitter} from 'angular2/angular2';
@Injectable()
export class DataService {
    items:Array<any>;
    dispatcher: EventEmitter = new EventEmitter();
    constructor() {
        this.items = [
            { name: 'AAAA' },
            { name: 'BBBB' },
            { name: 'CCCC' }
        ];
    }
    getItems() {
        return this.items;
    }
    sendItems() {
        this.dispatcher.next( this.items );
    } 
}
export var DATA_BINDINGS: Array<any> = [
    DataService
];


@Component({
    selector: 'rabble'
})
@View({
    ...
})
export class Rabble {

    items       : Array<any>;

    constructor( public dataService  : DataService) { 

        console.log('this.routeParam', this.dataService.getItems());
    }

    afterViewInit() {
        this.???.toRx().subscribe((data) => {
            console.log('New item data has arrived!', data);
        });
    }

    handleClick() {
        this.dataService.sendItems();
    }
}

OriginalL'auteur Benjamin McFerren | 2015-11-04