Bootstrap módulos múltiplos ou únicos com base no URL em main.ts
Estou trabalhando com um projeto da web (.NET Framework MVC) que não pode ser totalmente transferido para um projeto angular completo, por isso não posso usar o roteamento do angular para carregamento lento, mas também não quero carregar tudo onde estão os componentes angulares usava. É uma solução corporativa em que não é fácil (e barato) dizer: "Ei, vamos utilizar totalmente o angular e esquecer o projeto antigo!".
ntão resolvi isso, na minha opinião, de forma limpa para carregar diferentes módulos com base na URL, para evitar carregar tudo junt
main.ts
console.log("bootstrapping start");
if (window.location.pathname.toLowerCase().includes("contactplans/details")) {
console.log("bootstrapping contactplan details");
platformBrowserDynamic().bootstrapModule(ContactplanDetailsModule)
.catch(err => console.log(err));
} else if (window.location.pathname.toLowerCase().includes("contactplans/index") || window.location.pathname.toLowerCase().endsWith("contactplans") || window.location.pathname.toLowerCase().includes("settings/contactplans")) {
console.log("bootstrapping contactplan index");
platformBrowserDynamic().bootstrapModule(ContactplanListModule) //contact plan index and settings page
.catch(err => console.log(err));
}
console.log("bootstrap decision done, bootstrapping menu");
platformBrowserDynamic().bootstrapModule(MenuModule)
.catch(err => console.log(err));
Assim, com base no URL, ele carrega módulos e em todas as páginas carrega o módulo de men
Por enquanto, eu meio que tenho que fazer dessa maneira, este é apenas um pequeno exemplo: o uso do angular aumentará significativamente em mais e mais páginas individuais até que possamos 'mudar' mais facilmente para um projeto angular completo (no .NET Core, que funciona muito bem em conjunto).
Então, isso funciona bem emdesenvolviment. Usandong build --watch
faz as coisas desejadas. Agora em produção, executandong build --prod
cria problemas. Para mim, parece mais umerr então outra coisa.
Na captura de tela abaixo, demonstro o que está sendo produzido apósng build --prod
quando faço modificações no código acim
Como você pode ver, ao usar apenas uma linha de inicialização, ele funciona bem, sem erro
Mas quando tenho vários como gostaria, ele muda o módulo real parafunction() {}
, que fornece o erro do console:
Uncaught Error: No NgModule metadata found for 'function(){}'.
Isso é realmente um bug ou estou fazendo algo errado?