如何在Angular中的另一个请求中使用订阅的数据

如何在Angular中的另一个请求中使用订阅的数据,angular,angular6,Angular,Angular6,我有将提交数据的post请求。提交数据后,我会得到一个响应,其中包含提交项目的ID 我已将该ID分配给变量 现在,我需要在另一个post请求中使用该变量 当我尝试时,我可以看到值为空 this.sharepointService.createItem().subscribe( (response : Response) => { this.lastItemCreatedId = response['d'].ID; // latitemcreated is a variabl

我有将提交数据的post请求。提交数据后,我会得到一个响应,其中包含提交项目的ID

我已将该ID分配给变量

现在,我需要在另一个post请求中使用该变量

当我尝试时,我可以看到值为空

 this.sharepointService.createItem().subscribe( (response : Response) => {
      this.lastItemCreatedId = response['d'].ID;  // latitemcreated is a variable
      console.log("Newly created Item ID :" + this.lastItemCreatedId)
    })
现在我需要在另一个请求中使用lastItemCreatedId

      let url = "_spPageContextInfo.webAbsoluteUrl"+"_api/web/lists/getByTitle('List')/items('"+this.lastItemCreatedId+"')/AttachmentFiles/add(FileName='abc.txt')"

 this.sharepointService.addAttachementstoItem(url).subscribe()

信息:以上两个是post请求


如何在另一个post请求中使用lastItemCreatedID变量值?

因为这两个方法都是一个接一个地调用的,所以应该使用RxJS运算符

我们可以使用
mergeMap
createItem()
中的观察值映射到一个内部观察值,该观察值随后将作为
url
变量的一部分进行分配。然后,我们调用addAttachementstoItem()方法,并在下一行的subscribe()中返回观测值

import { mergeMap } from 'rxjs/operators';

this.sharepointService.createItem()
  .pipe(
    mergeMap((response : Response) => {
      this.lastItemCreatedId = response['d'].ID;
      let url = "_spPageContextInfo.webAbsoluteUrl"+"_api/web/lists/getByTitle('List')/items('"+this.lastItemCreatedId+"')/AttachmentFiles/add(FileName='abc.txt')"
      return this.sharepointService.addAttachementstoItem(url);
    }).subscribe(res => {
      // do the rest here
    })

第二个post请求是如何触发的?调用
createItem()
后是否立即调用它?在Sharpeoint服务中,我有两个不同的POST请求。一个用于createItem,另一个用于addAttachmentstoItem。这两个请求将在单击提交按钮时触发。首先触发createItem,然后再触发addAttachmentsToItem在这种情况下,它实际上非常类似于我刚才回答的另一个问题。你可以在这里读到更多关于它的信息!我会试试的!我已经试过了,但是return语句在循环中。因此,我得到了一个错误:类型为“(response:Object)=>void”的参数不能赋值给类型为“(value:Object,index:number)=>observateInput”的参数。类型“void”不可分配给类型“ObservableInput”@Shivaay我可以知道循环在哪里吗?您提到代码中有一个循环?