Javascript Angular2:属性绑定什么时候发生?

Javascript Angular2:属性绑定什么时候发生?,javascript,angular,typescript,Javascript,Angular,Typescript,我只是从Angular2开始,读官方文件。然而,我还没有找到关于绑定如何以及何时发生的具体细节,而且事情似乎不像我预期的那样工作 我有一个简单的子组件 @Component({ selector: 'dummy', template: ` <div>{{data}}</div> ` }) export class Dummy { @Input() data; } @组件({ 选择器:“dummy”, 模板:` {{data}} ` }) 导出类

我只是从Angular2开始,读官方文件。然而,我还没有找到关于绑定如何以及何时发生的具体细节,而且事情似乎不像我预期的那样工作

我有一个简单的子组件

@Component({
  selector: 'dummy',
  template: `
    <div>{{data}}</div>
  `
})
export class Dummy {
  @Input() data;

}
@组件({
选择器:“dummy”,
模板:`
{{data}}
`
})
导出类虚拟{
@输入()数据;
}
和根组件

@Component({
  selector: 'main',
  template: `
    <h1>hello</h1>
    <dummy [data]="data"></dummy>
  `
})
export class MainComponent {
    data: string = "initial text";

    ngOnInit() {
      setTimeout(this.initData, 5000);
    }

    initData() {
      this.data = "new text";
    }
}
@组件({
选择器:'main',
模板:`
你好
`
})
导出类主组件{
数据:string=“初始文本”;
恩戈尼尼特(){
setTimeout(this.initData,5000);
}
initData(){
this.data=“新文本”;
}
}

我希望子组件显示的文本在5秒后会发生变化,但事实并非如此。我做错了什么?文档是否解释了何时以及在什么条件下初始化和更新绑定值?

您正在丢失此
的上下文。当
setTimeout
回调运行时,
不再指向组件。您可能需要检查一下javascript
这个问题

尝试:


您正在丢失此
的上下文。当
setTimeout
回调运行时,
不再指向组件。您可能需要检查一下javascript
这个问题

尝试:


您忘记导入OnInit接口并使组件实现它

从'@angular/core'导入{Component,OnInit}

然后

export类MainComponent实现OnInit{…}

您忘记导入OnInit接口并让组件实现它

从'@angular/core'导入{Component,OnInit}

然后

export类MainComponent实现OnInit{…}

然而,这不是问题所在。它只用于类型检查的接口,函数
ngOnInit
称为regardlessHowever,这不是问题所在。它仅用于类型检查的接口,调用函数
ngOnInit
regardless@blue_note,这个答案是正确的,请参阅我创建的plunkr示例,@blue_注意,这个答案是正确的,请参阅我创建的plunkr示例,查看有关的文章。对于您的示例,您需要要求angular检查更改。为此,注入ChangeDetectorRef并调用markForChanges()方法。阅读文章了解更多信息。@BuDen:谢谢!!你知道它在官方文档中的什么地方描述了变更检测吗?你可以查看文档,因为它没有几个例子。查看关于变更检测的文章。对于您的示例,您需要要求angular检查更改。为此,注入ChangeDetectorRef并调用markForChanges()方法。阅读文章了解更多信息。@BuDen:谢谢!!您知道它在官方文档中的什么地方描述了变更检测吗?您可以查看文档,因为它没有几个示例。
setTimeout(()=>{
      this.data = "new text";
 },5000);