Как передать переменную fix в angular service.ts? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть API для получения идентификатора пользователя, имени и некоторых других деталей.Сейчас я создаю POST API для отправки данных и user_id.я вызываю POST-сервис в разных компонентах и ​​передаю разные значения, но User_id одинаков в каждом компоненте.

Service.ts

@Injectable({
  providedIn: 'root'
})

 get_user_info(){
      return this.httpClient.get(this.baseUrl + '/users/user_info', { headers: headers }); <-- getting all data
    }
  }

  send_user_preference(item) {
    console.log("Checking passed item: ",item);
    return this.httpClient.post(this.baseUrl + '/users-likes',item); <--- here i need data from resource + user_id
    console.log("-------------------------");
  }

я не хочуотправьте user_id из родительского comp каждому дочернему компоненту как @Import user_id, так как он выглядит избыточным, потому что user_id одинаков.

Я хочу, чтобы user_id направлялся напрямую в службу POST независимо от того, из какого компонента была вызвана служба.

Ответы [ 2 ]

3 голосов
/ 26 апреля 2019

В вашем распоряжении есть user_id опора, вы можете установить его из любого компонента или инициализировать его здесь в соответствии с вашими требованиями.

Ваш пост должен быть таким:

this.httpClient.post(this.baseUrl + '/users-likes', {user_id: this.user_id, ...item})
1 голос
/ 27 апреля 2019

Просто используйте tap при выполнении запроса get, сохраните его в переменной вашего сервиса, которую вы можете напрямую использовать в своем почтовом запросе. Итак:

import { tap } from 'rxjs/operators';

// ...

userId;

get_user_info() {
  return this.httpClient.get<any>(...).pipe(
    // apply your usecase, whatever property id is stored in
    tap((data) => this.userId = data.userId),
    catchError( /** error handling! **/) 
  )
}

Теперь вы можете использовать это в вашем запросе:

send_user_preference(item) {
  console.log(this.userId) // use it how you need it!
}

Теперь ни один из ваших компонентов не должен заботиться о том, какой идентификатор пользователя используется при отправке запроса.

Также предложение, не связанное с проблемой: пожалуйста, введите ваши данные в интерфейсы вместо того, чтобы не использовать их, или any, также рассмотрите возможность использования обработки ошибок для ваших запросов http.

...