我有一个API来获取用户ID,名称和一些其他详细信息。 现在,我正在创建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("-------------------------");
}
我不想以@Import user_id的形式将父组件的user_id发送到每个子组件,因为user_id相同,这似乎是多余的。
无论要从哪个组件调用服务,我都希望user_id直接进入POST服务。
答案 0 :(得分:3)
您的服务中有一个user_id
道具,您可以根据需要从任何组件进行设置或在此处自行初始化。
将您的信息设为:
this.httpClient.post(this.baseUrl + '/users-likes', {user_id: this.user_id, ...item})
答案 1 :(得分:1)
在执行get请求时只需使用tap
,将其存储在服务中的变量中即可直接在发布请求中使用。所以:
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!
}
现在,发布帖子请求时,您的任何组件都无需关心用户ID是什么。
还有与问题无关的建议:请在接口中键入数据,而不要使用任何内容或any
,也请考虑对http请求使用错误处理。