在接收休息数据后,我应该使用哪种生命周期方法来创建子组件?

时间:2016-02-12 07:14:41

标签: dart angular

我有一个" Angular2"组件" ItemBoard"这是" Item"的容器。组件。我需要先通过远程服务获取购物车数据,然后用它来创建商品。我想知道ItemBoard中的哪个生命周期方法应该用于此操作?

ngOnChanges()
ngOnInit()
ngDoCheck()

@Component(selector: '[itemBoard]', templateUrl: "itemBoard.html", directives: const [Item],  viewProviders: const [CartService])
class ItemBoard  {

      List cartItems= [];

      ItemBoard(){}

}

@Component(selector: '[item]', templateUrl: "item.html", directives: const [Item])
class ItemBoard  {

      @Input() List cartItems;


}

1 个答案:

答案 0 :(得分:1)

如果您只是更改绑定ngForngIfngSwitch[prop]="field"使用的数据,那么您不必关心生命周期钩子。只需更新数据,Angular就可以完成剩下的工作。 如果在Angular创建绑定之前更新数据,Angular甚至不会注意到其他更改检测负责更新视图。

为避免重复工作,请尽可能早地进行更新,并且只在必要时进行更新。

如果有重复更新,收集更新并立即更新Angular与收集的更改绑定的字段可能会有所帮助。
通过将默认更改检测策略更改为onPush,然后在" all"时通知Angular,可以简化此策略。更改已应用,并且是Angular更新视图的时间(Triggering Angular2 change detection manually)。

如果您使用ElementRef或类似内容修改DOM,则ngAfterViewInit()是正确的生命周期挂钩https://angular.io/docs/ts/latest/api/core/AfterViewInit-interface.html 让Angular完成视图创建,然后添加自定义。