2017-01-08 8 views
-1

Observableを使用すると、接続されたユーザーでストリームを生成したいとします。使用していないと私はコンソールログが表示されていない「作成」観測可能なストリームを作成する

import {Injectable} from '@angular/core'; 
import {Subject, BehaviorSubject, Observable} from 'rxjs'; 
import {User} from "./user"; 
import {IUserService} from "./IUserService"; 

let initialConnectedUsers: User[] = []; 
interface IUsersOperation extends Function { 
    (users: User[]): User[]; 
} 

@Injectable() 
export class UserService implements IUserService{ 
    currentUser: Subject<User> = new BehaviorSubject<User>(null); 

    newUser: Subject<User> = new Subject<User>(); 
    connectedUsers: Observable<User[]>; 

    updates: Subject<any> = new Subject<any>(); 
    create: Subject<User> = new Subject<User>(); 

    constructor(){ 
     this.connectedUsers = this.updates 
      .scan((users: User[], operation: IUsersOperation) => { 
        return operation(users); 
       }, 
       initialConnectedUsers) 
      .publishReplay(1) 
      .refCount(); 

     this.create.map(function (user: User): IUsersOperation { 
      return (users: User[]) => { 
       console.log('foo'); 
       return users.concat(user); 
      } 
     }).subscribe(this.updates); 

     this.newUser.subscribe(this.create); 
    } 

    public setCurrentUser(newUser: User): void { 
     this.currentUser.next(newUser); 
     this.newUser.next(newUser); 
    } 
} 

export var userServiceInjectables: Array<any> = [ 
    UserService 
]; 

しかし、私の場合で観察:本で

は、私は以下のコードに非常によく似exempleをお読みください。 (exemple用:app.component.ts)アプリケーションの初期化時

+0

「観察可能な私の場合には 『*どういう意味*』使用しない」を作成しますか? – martin

+0

あなたはここから(https://github.com/ng-book/angular2-rxjs-chat/blob/master/app/ts/services/MessagesService.ts)、私に影響を与えたコードを読むことができます。そのコードでは、connectedUsersに相当するものにobservablesの作成と更新が行われます – mickaelw

答えて

0

私はこのコードを書く:

this.userService.connectedUsers.subscribe(() => ({})); 
関連する問題