2016-11-30 93 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'類型。 –

相關問題