更改默认更改检测策略

Posted

技术标签:

【中文标题】更改默认更改检测策略【英文标题】:Change default change detection strategy 【发布时间】:2016-10-15 18:36:38 【问题描述】:

如何设置默认变更检测策略为OnPush?可以以某种方式全局设置吗?

我想避免将这一行添加到每个组件中

@Component(
    ...
    changeDetection: ChangeDetectionStrategy.OnPush,
    ...
)

【问题讨论】:

依赖于 ChangeDetectionStrategy.Default 策略的第三方组件呢? 我想他们应该指定 CheckAlways 如果他们依赖它......如果事实上可以轻松更改默认值。 他们不会,因为它是框架的默认值。如果你真的需要这种行为,我想你可以导入你自己的 Component 环绕 ComponenrMetadata 【参考方案1】:

可以在 CLI 中将更改检测策略设置为 OnPush,以便新生成的组件将其设置为这样。

ng generate component test --changeDetection=OnPush

您还可以在 angular.json 中将该值设置为默认值,这样您就不需要每次都设置标志:

// angular.json

  //...
  "schematics": 
    "@schematics/angular": 
      "component": 
        "changeDetection": "OnPush"
      
    
  

【讨论】:

【参考方案2】:

变更检测策略只能按组件或指令定义,不能全局定义。

不鼓励使用自定义装饰器,因为即将推出的离线模板编译器将不支持它。

【讨论】:

看下一个答案,可能来自 cli // angular.json //... "schematics": "@schematics/angular": "component": "changeDetection": "OnPush"

以上是关于更改默认更改检测策略的主要内容,如果未能解决你的问题,请参考以下文章

Angular ngOnChanges 和变化检测策略似乎是矛盾的?

如何更改hibernate的默认获取策略?

如何更改 Okhttp 中的默认缓存策略?

Rails 5 和设计:如何在不更改默认策略的情况下禁用基于令牌的策略上的会话

Angular 性能优化实战

更改终结器策略