【问题标题】:How to pass fix variable in angular service.ts?如何在角度 service.ts 中传递修复变量?
【发布时间】:2019-04-26 08:06:00
【问题描述】:

我有一个 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("-------------------------");
  }

我不想将父组件中的 user_id 作为 @Import user_id 发送到每个子组件,因为 user_id 相同,这似乎是多余的。

无论从哪个组件调用该服务,我都希望将 user_id 直接发送到 POST 服务。

【问题讨论】:

    标签: angular api angular7 angular2-services


    【解决方案1】:

    在您的服务中有一个 user_id 属性,您可以从任何组件中设置它或根据您的要求在此处自行初始化。

    让你的帖子喜欢:

    this.httpClient.post(this.baseUrl + '/users-likes', {user_id: this.user_id, ...item})
    

    【讨论】:

    • 我怎样才能让 this.user 投入使用,因为我是从另一个组件中的 get api 中获取这个值的,我什至没有调用 POST 服务。这正是我面临获取该值的问题的地方。很抱歉没有早点解决这个问题。
    • @AnshulRiyal 那么,在您的获​​取请求完成后,您会一直拨打您的post() 吗?
    • 在点击任何项目时,我使用特定项目详细信息和 user_id 调用该邮政服务。现在我对不同类型的项目有不同的组件。我不想使用@Input() user_id: integer; 从父组件获取 id,因为我有 4 个组件。
    • @AnshulRiyal 好的 1. 在子组件中单击之前,您在父组件中是否有 id? 2. 如果我错了,请纠正我,你在你的 childd 组件中点击,所有的孩子都将使用相同的 id,但这个 id 必须来自父母,你不想把它发送给每个孩子?
    • 是的。整个会话的 user_id 相同。我只是将不同的项目从父组件传递给子组件。孩子没有 user_id。 ```
      。等等 ON ```
    【解决方案2】:

    在执行获取请求时只需使用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!
    }
    

    现在您的任何组件都不需要在发出 post 请求时关心用户 ID 是什么。

    还有一个与问题无关的建议:请将您的数据输入到接口而不是使用 none,或 any,同时考虑对您的 http 请求使用错误处理。

    【讨论】:

      猜你喜欢
      • 2016-08-11
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2018-10-26
      • 2021-01-13
      相关资源
      最近更新 更多