如何在 Angular 2 中调用其构造函数之前将数据发送或绑定到子组件?

Posted

技术标签:

【中文标题】如何在 Angular 2 中调用其构造函数之前将数据发送或绑定到子组件?【英文标题】:How to send or bind data to child component before it's constructor is called in angular 2? 【发布时间】:2017-01-16 08:37:31 【问题描述】:

我在 Angular 2 中有父子组件,我想将数据绑定到子指令并在构造函数中获取数据并将该数据传递给服务调用。

父模板 -

<child-comp [id]="id"></child-comp>

子构造函数 -

@Input() id : number;
constructor(service : Service)
      this.service.getData(this.id).subscribe((model: Model) => 
                // logic ...
  );

我无法在子构造函数中获取绑定数据 (id)。但是,我能够在 ngOnChanges() 生命周期挂钩中获取数据。请告诉我如何解决这个问题?

注意 - 当组件加载时,我最初无法获取数据,无论是在 ngOnInit 还是构造函数中。一旦组件在 ngOnChanges 中初始化,我就能得到它。

【问题讨论】:

【参考方案1】:

您必须在 Child 构造函数的 ngOnInit 中获取绑定数据:

ngOnInit()
  this.service.getData(this.id).subscribe((model: Model) => 
                // logic ...
  );

【讨论】:

我无法在组件加载时获取数据,无论是在 ngOnInit 还是构造函数中。一旦组件在 ngOnChanges 中初始化,我就可以得到它。 设置id 中的值时来自父级?在此处发布与它相关的父代码。

以上是关于如何在 Angular 2 中调用其构造函数之前将数据发送或绑定到子组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用构造函数上的异步调用注入服务,Angular 2

Angular 应用如何回退到之前曾经浏览过的页面

Angular 2 - 构造函数调用后的生命周期事件

一旦 HTML 在 Angular 4 中完全动态呈现,如何在 jQuery 中调用函数?

Angular4在构造函数中调用一个函数

C#中子类构造函数中如何调用父类构造函数