首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问在订阅之外初始化的变量时未定义

访问在订阅之外初始化的变量时未定义
EN

Stack Overflow用户
提问于 2022-06-04 20:34:40
回答 2查看 34关注 0票数 0

我正在使用Apex图表,图表在第二个组件中。我需要调用一个函数来从第一个组件切换第二个组件中的一些系列。我现在可以调用这个函数了,但是当我试图调用订阅内部的图表时,它是未定义的。但是,如果我在ngAfterViewInit()中调用该图表,则该图表是正确的。那么,有谁能建议我如何访问订阅内的图表呢?

第二部分:

代码语言:javascript
复制
export class DashboardComponent implements OnInit {
  @ViewChild("chart") chart!: ChartComponent;
  constructor(public servic: MainService, private spinner: NgxSpinnerService, private router: Router) {
    this.servic.receiveMessage().subscribe(message => {
      this.toggle(message)
    })
  }
  public toggle(state: string) {
    console.log(this.chart);

  }
}

第二个组件的HTML:

EN

回答 2

Stack Overflow用户

发布于 2022-06-04 20:45:01

它不是undefined,因为它在.subscribe()内部。它是undefined,因为它在constructor()中。这是一个运行时问题。将订阅移动到OnInit()AfterViewInit() 生命周期钩

票数 0
EN

Stack Overflow用户

发布于 2022-06-05 04:01:07

您的服务文件稍后将被调用,这就是为什么您的“消息”uder订阅未定义,将您的服务从构造函数()移到OnInit()中。

代码语言:javascript
复制
constructor(public servic: MainService, private spinner: NgxSpinnerService, private router: Router) {}
    ngOnInit(){
    this.servic.receiveMessage().subscribe(message => {
          this.toggle(message)
        })
    }
public toggle(state: string) {
    console.log(this.chart);

  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72502979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档