diff --git a/npm/ng-packs/packages/schematics/src/utils/generics.ts b/npm/ng-packs/packages/schematics/src/utils/generics.ts index 193c62b1a5..96376900e7 100644 --- a/npm/ng-packs/packages/schematics/src/utils/generics.ts +++ b/npm/ng-packs/packages/schematics/src/utils/generics.ts @@ -67,21 +67,23 @@ export function generateRefWithPlaceholders(sourceType: string) { } export function extractSimpleGenerics(sourceType: string) { - const { identifier, generics } = extractGenerics(sourceType); + const { identifier, generics, array } = extractGenerics(sourceType); return { identifier: getLastSegment(identifier), generics: generics.map(getLastSegment), + array }; } export function extractGenerics(sourceType: string) { + const isArray = /\[\]$/.test(sourceType); const regex = /(?[^<]+)(<(?.+)>)?/g; const { identifier = '', generics = '' } = regex.exec(sourceType)?.groups ?? {}; - - return { + return { identifier, generics: generics.split(/,\s*/).filter(Boolean), + array: isArray ? '[]':'' }; } diff --git a/npm/ng-packs/packages/schematics/src/utils/rule.ts b/npm/ng-packs/packages/schematics/src/utils/rule.ts index 403adcd959..1e92f07895 100644 --- a/npm/ng-packs/packages/schematics/src/utils/rule.ts +++ b/npm/ng-packs/packages/schematics/src/utils/rule.ts @@ -25,7 +25,10 @@ export function applyWithOverwrite(source: Source, rules: Rule[]): Rule { export function mergeAndAllowDelete(host: Tree, rule: Rule) { return async (tree: Tree, context: SchematicContext) => { const nextTree = await callRule(rule, tree, context).toPromise(); - if(!nextTree) return; + if(!nextTree) { + return; + } + host.merge(nextTree, MergeStrategy.AllowDeleteConflict); }; } diff --git a/npm/ng-packs/packages/schematics/src/utils/type.ts b/npm/ng-packs/packages/schematics/src/utils/type.ts index dbae0c55db..a5c83f8e63 100644 --- a/npm/ng-packs/packages/schematics/src/utils/type.ts +++ b/npm/ng-packs/packages/schematics/src/utils/type.ts @@ -14,10 +14,8 @@ export function createTypeSimplifier() { ); type = /any` : identifier; + const { identifier, generics, array} = extractSimpleGenerics(type); + return generics.length ? `${identifier}<${generics.join(', ')}>${array}` : identifier; }); return (type: string) => {