2016-11-30 81 views
0

我做了一个功能,在我的应用程序中注册一个用户。为此,我写了下面的代码:制作一个包含行为平台的可观察对象

onRegister() { 
    const data = { 
     firstName: this.form.value.firstName, 
     lastName: this.form.value.lastName, 
     emailAddress: this.form.value.emailAddress 
    }; 

    this.userService.getUserByEmail(data) 
     .map(response => { 
     const authData = { 
      uid: response.uid, 
      newUser: response.newUser 
     }; 
     return authData; 
     }) 
     .do(authData => this.accountService.addUsersToAccount(authData, data)) 
     .map(authData => { 
     if (authData.newUser) { 
      return this.userService.createUser(data, authData, 5); 
     } else { 
      return this.accountService.addAccountToUser(data, authData, 5); 
     } 
     }) 
     .subscribe((resp: Observable<User>) => { 
     console.log('added user to account', resp); 
     }); 
} 

在我的订阅功能,我想console.log添加的用户。目前resp是一个可观察的行为,持有具有期望值的行为主体。 RESP的结构如下:

添加的用户以考虑:可观察

- source: Observable 
-- source: BehavoirSubject 
--- value: Object (<<<< this is the data I want in my console.log) 

回答

0

你的createUser返回可观察到的用户的。您可以使用flatMap()而不是map()来扁平化并获得您的用户subscribe

+0

嗨马克。当我将map()函数更改为flatMap()时,我得到以下打字稿错误: [ts]类型'(authData:{uid:any; newUser:any;})=> void的参数Observable '不能分配给类型为'(value:{uid:any; newUser:any;},index:number)=> ObservableInput'的参数。 键入'void | Observable '不可分配为键入'ObservableInput'。 类型'void'不可分配给'ObservableInput'类型。 –

相关问题