From 68ead76bed123113683b488ef31f9099ffb79307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=B3=C3=B0i=20Karlsson?= Date: Thu, 8 Jan 2026 22:41:04 +0100 Subject: [PATCH] Support changeDetection option for components --- .../__name@dasherize__.__type@dasherize__.ts.template | 5 +++-- packages/schematics/component/schema.d.ts | 1 + packages/schematics/component/schema.json | 9 ++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/schematics/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template b/packages/schematics/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template index 7272132..4327394 100644 --- a/packages/schematics/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +++ b/packages/schematics/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import {<% if(changeDetection === 'OnPush') { %> ChangeDetectionStrategy,<%} %> Component, OnInit } from '@angular/core'; @Component({ selector: '<%= selector %>', templateUrl: './<%= dasherize(name) %>.<%= dasherize(type) %>.html', styleUrls: ['./<%= dasherize(name) %>.<%= dasherize(type) %>.<%= styleext %>'],<% if(standalone) {%> - standalone: true,<%} %> + standalone: true,<%} %><% if(changeDetection === 'OnPush') { %> + changeDetection: ChangeDetectionStrategy.OnPush,<%} %> }) export class <%= classify(name) %><%= classify(type) %> implements OnInit { diff --git a/packages/schematics/component/schema.d.ts b/packages/schematics/component/schema.d.ts index 3db5e6a..2bbd679 100644 --- a/packages/schematics/component/schema.d.ts +++ b/packages/schematics/component/schema.d.ts @@ -13,4 +13,5 @@ export interface Schema { entryComponent?: boolean; type?: string; standalone?: boolean; + changeDetection?: 'Default' | 'OnPush'; } diff --git a/packages/schematics/component/schema.json b/packages/schematics/component/schema.json index d117292..4d81191 100644 --- a/packages/schematics/component/schema.json +++ b/packages/schematics/component/schema.json @@ -62,7 +62,7 @@ "format": "html-selector", "description": "The selector to use for the page" }, - "createModule": { + "createModule": { "type": "boolean", "description": "Allows creating an NgModule for the component", "default": false @@ -90,6 +90,13 @@ "type": "boolean", "description": "Specifies if the component should be standalone", "default": false + }, + "changeDetection": { + "type": "string", + "description": "Specifies the change detection strategy used by the component", + "enum": ["Default", "OnPush"], + "default": "Default", + "alias": "c" } }, "required": []