首页 > 解决方案 > 从 RxJs Observable 方法调用访问我返回的数据

问题描述

(NEWB) 如何修改 my中的updateUserProfile()Observable 方法service,以便可以访问返回的数据?我想在 myuser中设置 my 的值service,而不是在 my 中component。是否有我可以使用的其他回调函数或运算符?

这是我的用户对象:

  user: User = {
    user: {
      first_name: '',
      last_name: '',
      id_number: '',
      email: '',
      password: '',
      phone: '',
      notes: '',
      ricaAddress: {
        street_number: '',
        street_name: '',
        building_name: '',
        floor_level: '',
        unit_number: '',
        suburb: '',
        city: '',
        province: '',
        postal_code: '',
        country: ''
      }
    }
  };

这是我的updateProfile()电话component

  updateProfile() {
    this.userService
      .updateUserProfile(this.user)
      .subscribe(
        response => {},
        err => this.handleError(err),
        () => console.log('complete')
      );
  }

这是updateUserProfile()我要修改的服务中的方法

  updateUserProfile(user): Observable<any> {
    const httpOptions2 = {
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
        apiKey: 'xEr4slh6wdngI-imBb9t8sm4JLY-e1yQz7Tmo7S2A',
        key: '6f4962c7-0706-4cf7-b7ce-0b7dc75fcc57',
        Authorization: this.userToken
      })
    };

    return this.http
      .put(this.apiUrl + 'users' + 'user_id', user, httpOptions2)
      .pipe(catchError(this.handleError));
  }

谢谢!

标签: javascriptangularrxjsobservable

解决方案


您可以添加map管道以返回一个新的、更新的对象。在您的服务中:

return this.http
  .put(this.apiUrl + 'users' + 'user_id', user, httpOptions2)
  .pipe(
    map(response => {
      // return a new object from here
    }),
    catchError(this.handleError)
  );

的回调的返回值map可以直接在你的组件中访问。


推荐阅读