Изменить стратегию обнаружения изменений по умолчанию

Как установить стратегию обнаружения изменений по умолчанию на OnPush? Можно ли это как-то установить глобально?

Я хочу избежать добавления этой строки в каждый компонент

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

Ответ 1

Стратегия обнаружения изменений может быть определена только для каждого компонента или директивы не глобально.

Использование пользовательского декоратора обескураживается, потому что он не будет поддерживаться компилятором предстоящего автономного шаблона.

Ответ 2

Невозможно установить глобальный ChangeDetection.

Тем не менее, его можно установить в CLI, так что для всех компонентов, вновь сгенерированных с использованием ng generate component (или ng gc), будет установлено значение OnPush.

Запустите эту команду, чтобы установить ее:

ng config [email protected]/angular.component.changeDetection OnPush

В качестве альтернативы (это то, что делает эта команда), добавьте этот блок на базовом уровне вашего angular.json:

// angular.json
{
  //...
  "schematics": {
    "@schematics/angular": {
      "component": {
        "changeDetection": "OnPush"
      }
    }
  }
}