diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs index 42e23ab7c8..7cf083fa1a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/AngularSourceCodeAdder.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -71,6 +72,7 @@ public class AngularSourceCodeAdder : ITransientDependency { await AddProjectToEnvironmentTsAsync(angularPath, moduleName); await AddProjectToAppModuleTsAsync(angularPath, moduleName); + await AddProjectToAppRoutingTsAsync(angularPath, moduleName); } private async Task AddProjectsToAngularJsonAsync(string angularPath, List projects) @@ -244,15 +246,15 @@ public class AngularSourceCodeAdder : ITransientDependency { return; } - + var fileContent = File.ReadAllText(filePath); - fileContent = Regex.Replace(fileContent, @"apis\s*:\s*{", - "apis: {"+ Environment.NewLine + - " " + moduleName.Split(".").Last() + ": {"+ Environment.NewLine + - " rootNamespace: '" + moduleName + "',"+ Environment.NewLine + + fileContent = Regex.Replace(fileContent, @"apis\s*:\s*{", + "apis: {" + Environment.NewLine + + " " + moduleName.Split(".").Last() + ": {" + Environment.NewLine + + " rootNamespace: '" + moduleName + "'," + Environment.NewLine + " },"); - + File.WriteAllText(filePath, fileContent); } @@ -264,23 +266,56 @@ public class AngularSourceCodeAdder : ITransientDependency { return; } - + var fileContent = File.ReadAllText(filePath); var moduleNameAsConfigPath = moduleName.ToKebabCase(); - + if (moduleName.Contains(".")) { var moduleNameSplited = moduleName.Split("."); - moduleNameAsConfigPath = moduleNameSplited.Take(moduleNameSplited.Length-1).JoinAsString(".").ToKebabCase() + "/" + moduleNameSplited.Last().ToKebabCase(); + moduleNameAsConfigPath = moduleNameSplited.Take(moduleNameSplited.Length - 1).JoinAsString(".").ToKebabCase() + "/" + moduleNameSplited.Last().ToKebabCase(); } - fileContent = "import { "+moduleName.Split(".").Last()+"ConfigModule } from '@"+moduleNameAsConfigPath+"/config';" + Environment.NewLine + fileContent; - - fileContent = Regex.Replace(fileContent, "imports\\s*:\\s*\\[", - "imports: ["+ Environment.NewLine + + fileContent = "import { " + moduleName.Split(".").Last() + "ConfigModule } from '@" + moduleNameAsConfigPath + "/config';" + Environment.NewLine + fileContent; + + fileContent = Regex.Replace(fileContent, "imports\\s*:\\s*\\[", + "imports: [" + Environment.NewLine + " " + moduleName.Split(".").Last() + "ConfigModule.forRoot(),"); - + + File.WriteAllText(filePath, fileContent); + } + + private async Task AddProjectToAppRoutingTsAsync(string angularPath, string moduleName) + { + string filePath = Path.Combine(angularPath, "src", "app", "app-routing.module.ts"); + + if (!File.Exists(filePath)) + { + return; + } + + string fileContent = File.ReadAllText(filePath); + string moduleNameAsConfigPath = moduleName.ToKebabCase(); + string path = moduleName.ToKebabCase(); + + if (moduleName.Contains(".")) + { + var moduleNameSplitted = moduleName.Split("."); + moduleNameAsConfigPath = moduleNameSplitted.Take(moduleNameSplitted.Length - 1).JoinAsString(".").ToKebabCase() + "/" + moduleNameSplitted.Last().ToKebabCase(); + path = $"{moduleNameSplitted.Last().ToKebabCase()}"; + } + + string pattern = "Routes\\s*=\\s*\\["; + string newContent = $@"Routes = [ + {{ + path: '{path}', + loadChildren: () => import('@{moduleNameAsConfigPath}') + .then(m => m.{(moduleName.Split(".").Length > 1 ? moduleName.Split(".")[1] : moduleName)}Module.forLazy()) + }}, +"; + + fileContent = Regex.Replace(fileContent, pattern, newContent); File.WriteAllText(filePath, fileContent); } @@ -311,7 +346,7 @@ public class AngularSourceCodeAdder : ITransientDependency { Directory.Delete(vscodeFolder, true); } - + var projectsInFolder = Directory.GetDirectories(folder); if (projectsInFolder.Length == 1 && Path.GetFileName(projectsInFolder[0]) == "projects") @@ -360,7 +395,7 @@ public class AngularSourceCodeAdder : ITransientDependency return projects; } - + private async Task GetProjectPackageNameAsync(string angularProjectsPath, string project) { var packageJsonPath = Path.Combine(angularProjectsPath, project, "package.json");