首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular 2 @Input get被调用了很多次

Angular 2是一种流行的前端开发框架,它提供了一种组件化的方式来构建现代化的Web应用程序。@Input装饰器是Angular 2中的一个重要特性,它用于在组件之间传递数据。

当一个组件的@Input属性发生变化时,Angular会自动调用该属性的getter方法。在这个问题中,@Input get被调用了很多次,可能是由于以下几个原因:

  1. 组件的@Input属性被多次赋值:如果在父组件中多次改变了@Input属性的值,那么每次改变都会触发getter方法的调用。
  2. 组件的变更检测策略:Angular的变更检测机制会定期检查组件的属性是否发生变化,如果发生变化,就会调用相应的getter方法。如果组件的变更检测策略设置为默认值(ChangeDetectionStrategy.Default),那么即使@Input属性的值没有实际变化,也会触发getter方法的调用。

为了解决这个问题,可以采取以下几种方法:

  1. 检查父组件是否多次改变了@Input属性的值,如果是的话,可以优化代码,避免多次赋值。
  2. 考虑修改组件的变更检测策略。如果确定@Input属性的值不会频繁变化,可以将变更检测策略设置为OnPush,这样只有当@Input属性的引用发生变化时才会触发变更检测。
  3. 如果以上方法都无法解决问题,可以考虑使用Angular提供的ChangeDetectorRef服务手动触发变更检测,而不依赖自动检测。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 从单向到双向数据绑定0.前言1.单向数据(代表:react)2.观察者模式3.双绑的中间枢纽——Object.defineproperty(代表:vue)4. 脏值检测(代表:angular1)前面说

    用户最满意的,无非就是界面的操作能实事反应到数据。而实现这种的可以有双向数据绑定、单向数据流的形式。双向数据绑定是,ui行为改变model层的数据,model层的数据变了也能反映到ui上面。比如点击按钮,数字data+1,如果我们自己在控制台再给data+1,那么v层也能马上看见这个变化。而单向数据流就不同了,我们只有ui行为改变,data就改变并马上反馈到v层,而我们自己在控制台改变data这个值,v层居然不变(model是已经变了并没有反应),只能等到下一次ui行为改变,带上这个data结果一起处理。仅仅在V层的单向数据,真的能满足用户需求?数据很庞大的时候,双绑性能如何?其实,每一种都有每一种的适用场景,还是那句话,脱离实际场景谈性能,就是扯淡

    04

    从单向到双向数据绑定

    用户最满意的,无非就是界面的操作能实事反应到数据。而实现这种的可以有双向数据绑定、单向数据流的形式。双向数据绑定是,ui行为改变model层的数据,model层的数据变了也能反映到ui上面。比如点击按钮,数字data+1,如果我们自己在控制台再给data+1,那么v层也能马上看见这个变化。而单向数据流就不同了,我们只有ui行为改变,data就改变并马上反馈到v层,而我们自己在控制台改变data这个值,v层居然不变(model是已经变了并没有反应),只能等到下一次ui行为改变,带上这个data结果一起处理。仅仅在V层的单向数据,真的能满足用户需求?数据很庞大的时候,双绑性能如何?其实,每一种都有每一种的适用场景,还是那句话,脱离实际场景谈性能,就是扯淡

    02
    领券