将订阅转换为字符串

时间:2019-05-15 11:25:01

标签: json angular typescript

我有返回一个用户的http方法,这是控制台登录this.usersService.getOneUser()。subscribe(data => {console.log(data)});的样子:

email: "user2@gmail.com"
id: "1"
phoneNumber: "23421234"
userName: "user2"

现在,我必须将接收到的值分配给新的数组对象。我尝试以下代码:

    this.users = new Array(1).fill({}).map((_, index) => {
      return <User>{

        userName: this.usersService.getOneUser().subscribe(data => {JSON.stringify(data.userName)})

      };
    });

尝试转换为JSON格式,不起作用。如果手动输入值,我可以添加一个用户,问题是如何从http请求中的数据填充该用户

      return <User>{

        email: 'test@mail.com',
        id: '1',
        phoneNumber: '12345',
        userName: 'user'
      };
    });

编译器说的是userName:Subcription两种类型都没有足够的重叠

2 个答案:

答案 0 :(得分:3)

this.usersService
  .getOneUser()
  .subscribe(data => this.users = [data]);

应该这样做。

答案 1 :(得分:0)

this.users = new Array(1).fill({}).map((_, index) => {
      return <User>{

        userName: this.usersService.getOneUser().subscribe(data => {JSON.stringify(data.userName)})

      };
    });

可能发生的情况是,由于getOneUser()的调用是异步调用,因此可能尚未完成,因此Array.fill(..可能会在实际获得用户之前完成执行