While you had multiple streams flowing into your scan operator, you'll need to map each stream to the specific values you Need to update your state the This is the want. This lesson covers using the "map operator to determine" What the "click" and "Interval should do" is updated.
Import {Component} from 'Angular2/core'; import {bootstrap} from 'Angular2/platform/browser'; import {Observable} from 'rxjs/observable'; Import'Rxjs/add/observable/interval'; Import'Rxjs/add/observable/merge'; Import'Rxjs/add/operator/map'; Import'Rxjs/add/operator/scan'; Import'Rxjs/add/operator/startwith'; import {Subject} from 'Rxjs/subject'; @Component ({selector:'app', Template: '<button (click) ="Click$.next ()">add One second</button> Async| Date'YMMMMEEEEDJMS'}} `})classApp {click$=NewSubject (); Clock Constructor () { This. Clock =Observable.merge (Observable.interval ( +). Mapto ('Second'), This. Click$.mapto ('Hour'). Startwith (NewDate ()). Scan (Acc:date, Curr:string) = { //acc:new Date () passed from Startwith//curr:string, passed from MaptoConsole.log (ACC, Curr); ConstDate:date =NewDate (Acc.gettime ()); if(Curr = = ="Second") {date.setseconds (Date.getseconds ()+1); } if(Curr = = ="Hour") {date.sethours (date.gethours ()+1 ); } returndate; }); }}bootstrap (APP);
[Angular 2] Mapping Streams to Values to affect state