【问题标题】:Getting data from service to another component从服务获取数据到另一个组件
【发布时间】:2019-10-10 16:20:07
【问题描述】:

组件 A 我有所有用户的列表,当我点击 EDIT 时,我将带有用户 ID 的数据发送到服务并从服务发送到 组件 B service.ts 我创建

  selectedUser = new Subject<any>();

来自组件 A

this.userService.selectedUser.next(this.user);

组件B

ngOnInit() {
this.userService.selectedUser.subscribe(
  user => {
    this.user = user;
    console.log(this.user);
  },
  data => {
    if (this.user === undefined) {
      this.addNewUserState = true;
      this.createForm();
    } else {
      this.addNewUserState = false;
      this.addNewUserForm.controls["username"].setValue(this.user.username);
      this.addNewUserForm.controls["firstName"].setValue(this.user.firstName);
    }
  }
)
};

在第一次 DETAIL 单击时,我没有获取数据,在网络选项卡中,我获取所选用户的数据,但 consol.log() 没有记录任何内容 这是预览 https://ttprivatenew.s3.amazonaws.com/pulse/bozzodj/attachments/11660135/TinyTake10-10-2019-10-00-04.mp4

【问题讨论】:

  • subscribe 不能这样工作,它需要一个 observer 对象或回调函数(下一个,错误,完成)所以你需要在这里做的是将回调合并到一个反正你的问题不清楚,你提到了console,但你的代码没有任何控制台功能
  • 我添加了 console.log()... 你能告诉我如何合并回调的例子吗?
  • ngOnInit() { this.userService.selectedUser.asObservable().subscribe( user => { this.user = user; console.log(this.user); if (this.user == = undefined) { // 代码 } else { // 代码 } } ) };
  • @Ezzabuzaid thnx,但同样的问题在这里......
  • 您能否使用@Ezzabuzaid 指出的正确语法,然后写下您遇到的错误。

标签: angular


【解决方案1】:

这通常发生在数据异步时。
您可以使用 async-awaitpromise

来处理它

以下是使用 async-await

完成的
ngOnInit() {
  this.userService.selectedUser.subscribe(async user => {
      this.user = await user;
      console.log(this.user);
    },
    data => {
      if (this.user === undefined) {
        this.addNewUserState = true;
        this.createForm();
      } else {
        this.addNewUserState = false;
        this.addNewUserForm.controls["username"].setValue(this.user.username);
        this.addNewUserForm.controls["firstName"].setValue(this.user.firstName);
      }
    }
  )
};

【讨论】:

  • thnx,我试试这个,但这不起作用。同样的问题仍然存在
猜你喜欢
  • 1970-01-01
  • 2020-11-24
  • 2021-08-06
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
  • 2018-02-22
相关资源
最近更新 更多