diff --git a/ui-ngx/src/app/core/services/resources.service.ts b/ui-ngx/src/app/core/services/resources.service.ts index 3e45ad0d3c..8088cf0736 100644 --- a/ui-ngx/src/app/core/services/resources.service.ts +++ b/ui-ngx/src/app/core/services/resources.service.ts @@ -237,34 +237,32 @@ export class ResourcesService { standaloneComponents: [] }, visitedModules: Set = new Set()): ModulesWithComponents { - if (module && ['object', 'function'].includes(typeof module)) { + if (module && ['object', 'function'].includes(typeof module) && !visitedModules.has(module)) { + visitedModules.add(module); if (ɵNG_MOD_DEF in module) { const moduleDef: ɵNgModuleDef = module[ɵNG_MOD_DEF]; - if (!visitedModules.has(moduleDef.type)) { - visitedModules.add(moduleDef.type); - const moduleInfo: ModuleInfo = { - module: moduleDef, - components: [] - } - modulesWithComponents.modules.push(moduleInfo); - const exportsDecl = moduleDef.exports; - let exports: Type[]; - if (Array.isArray(exportsDecl)) { - exports = exportsDecl; - } else { - exports = exportsDecl(); - } - for (const element of exports) { - if (ɵNG_COMP_DEF in element) { - const component: ɵComponentDef = element[ɵNG_COMP_DEF]; - if (!component.standalone) { - moduleInfo.components.push(component); - } else { - modulesWithComponents.standaloneComponents.push(component); - } + const moduleInfo: ModuleInfo = { + module: moduleDef, + components: [] + } + modulesWithComponents.modules.push(moduleInfo); + const exportsDecl = moduleDef.exports; + let exports: Type[]; + if (Array.isArray(exportsDecl)) { + exports = exportsDecl; + } else { + exports = exportsDecl(); + } + for (const element of exports) { + if (ɵNG_COMP_DEF in element) { + const component: ɵComponentDef = element[ɵNG_COMP_DEF]; + if (!component.standalone) { + moduleInfo.components.push(component); } else { - this.extractModulesWithComponents(module, modulesWithComponents, visitedModules); + modulesWithComponents.standaloneComponents.push(component); } + } else { + this.extractModulesWithComponents(module, modulesWithComponents, visitedModules); } } } else if (ɵNG_COMP_DEF in module) { diff --git a/ui-ngx/src/app/shared/components/markdown.component.ts b/ui-ngx/src/app/shared/components/markdown.component.ts index d890817d04..6ff0c4d48c 100644 --- a/ui-ngx/src/app/shared/components/markdown.component.ts +++ b/ui-ngx/src/app/shared/components/markdown.component.ts @@ -127,7 +127,7 @@ export class TbMarkdownComponent implements OnChanges { const preHtml = preElements.item(i).outerHTML.replace('ngnonbindable=""', 'ngNonBindable'); template = template.replace(matches[i][0], preHtml); } - template = this.sanitizeCurlyBraces(template); + template = this.sanitize(template); this.markdownContainer.clear(); let styles: string[] = []; let readyObservable: Observable; @@ -259,8 +259,8 @@ export class TbMarkdownComponent implements OnChanges { } } - private sanitizeCurlyBraces(template: string): string { - return template.replace(/{/g, '{').replace(/}/g, '}'); + private sanitize(template: string): string { + return template.replace(/{/g, '{').replace(/}/g, '}').replace(/@/g, '@'); } private destroyMarkdownInstanceResources() {