Javascript 如何将值从ngOnInit传递到函数

Javascript 如何将值从ngOnInit传递到函数,javascript,angular,typescript,Javascript,Angular,Typescript,我想知道如何将值从ngOnInit传递到同一组件的函数 这是我的例子。我从API获取数据,以显示页面的上下文。稍后,当我单击按钮时,我希望使用该数据,但在console.log中,我没有定义该数据。既然数据已经加载并显示在我的页面上,那个么它是如何定义的呢 ... clientId1; clientId2; clientNote; errorMsg; ngOnInit() { this.clientId1 = this.route.parent.snapshot.paramM

我想知道如何将值从ngOnInit传递到同一组件的函数

这是我的例子。我从API获取数据,以显示页面的上下文。稍后,当我单击按钮时,我希望使用该数据,但在console.log中,我没有定义该数据。既然数据已经加载并显示在我的页面上,那个么它是如何定义的呢

...
 clientId1;
 clientId2;
 clientNote;
 errorMsg;

 ngOnInit() {
    this.clientId1 = this.route.parent.snapshot.paramMap.get('userId1');
    this.clientId2 = this.getMethodClientId2();
  }

  getMethodClientId2(): void {
    this.userService.getUser().subscribe(
      (data) => {
        this.clientNote = data.ClientNotes;
      },
      (error) => (this.errorMsg = error)
    );
  }


  postMethodOnClick() {
    console.log(this.clientId1);
    console.log(this.clientId2);
}
...

这里有很多问题

  • 变量
    clientNote
    是异步赋值的。因此,如果要访问订阅之外的数据,则不知道是否分配了数据

  • clientD2
    变量不包含可能的cliend ID,它目前不包含任何内容。从你函数的名称来看,我相信你是想这么做的

  • ngOnInit(){
    this.clientId1=this.route.parent.snapshot.paramMap.get('userId1');
    此.getMethodClientD2();//{
    this.clientNote=data.ClientNotes;
    this.clientId2=data.ClientId;//(this.errorMsg=error)
    );
    }
    
    同样,变量
    this.clientd2
    是异步分配的,因此如果在分配值之前调用函数
    postMethodOnClick()
    ,控制台日志仍将
    未定义


    有关如何访问异步数据的更多信息,请参阅。

    请为此创建一个用于显示发生问题的API。您可以使用假API调用来显示演示。
    getMethodClientD2()
    方法不会返回任何内容,因此您希望如何使用
    console.log(this.clientD2)
    要显示除
    未定义之外的任何内容(
    未定义):)?是否两个控制台日志都未定义?我看不到ClientD2的设置位置。它是否应该在GetMethodClientD2()中设置?请查看