Les rutes angulars s'han enviat a la matriu després que la creació no funcioni en producció

Bloc

Les rutes angulars s'han enviat a la matriu després que la creació no funcioni en producció

Les rutes angulars s'han enviat a la matriu després que la creació no funcioni en producció

He creat un dipòsit de github que té un exemple perfecte del meu problema.



https://github.com/rjriel/dynamic-route-example

La part important del codi d’aquest repositori es troba a app.module.ts



ng serve

Quan s'executa aquest codi en desenvolupament (és a dir. ng serve --prod) Les dues rutes naveguen correctament. Tanmateix, quan s'executa aquest codi en producció (és a dir. second) El mainRoutes.push ruta que es va afegir a través de console.log(mainRoutes) dóna lloc a l'error següent:

erc20 vs bep 20
forEach

Algú sabria per què la compilació per a la producció produiria aquest error mentre funciona completament bé en el desenvolupament? O almenys una manera millor de depurar?



Edita:

La implementació real del que faig aquí és que tinc diverses pàgines en un lloc amb el mateix disseny d'informació, de manera que he creat un fitxer json que és un objecte on cada clau és la ruta i el valor és la informació del ruta. A continuació, carregueu el json i afegeixo les rutes, com es mostra aquí:

@NgModule

Faig un

let mainRoutes: Routes = [{ path: 'first', component: FirstComponent }] 

mainRoutes.push({
path: second,
component: SecondComponent
})

@NgModule({

imports: [
RouterModule.forRoot(mainRoutes),

després de l'anterior forEach i veure totes les rutes de la matriu com s'esperava. També per a aclariments, aquest
ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL  
Segment: ‘second’
Error: Cannot match any routes. URL Segment: ‘second’
at t.BkNc.t.noMatchError (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.selector (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at t.BkNc.t.noMatchError (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.selector (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e.error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.T14+.e._error (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at u (polyfills.8c1e4b56978ce6347832.bundle.js:1)
at u (polyfills.8c1e4b56978ce6347832.bundle.js:1)
at polyfills.8c1e4b56978ce6347832.bundle.js:1
at e.invokeTask (polyfills.8c1e4b56978ce6347832.bundle.js:1)
at Object.onInvokeTask (vendor.0828fd59ec5e6a599e72.bundle.js:1)
at e.invokeTask (polyfills.8c1e4b56978ce6347832.bundle.js:1)
at r.runTask (polyfills.8c1e4b56978ce6347832.bundle.js:1)
at o (polyfills.8c1e4b56978ce6347832.bundle.js:1)
at t.invokeTask [as invoke] (polyfills.8c1e4b56978ce6347832.bundle.js:1)
at h (polyfills.8c1e4b56978ce6347832.bundle.js:1)
el bucle es fa abans del
import * as PageLayouts from ‘…/page-layouts.json’  
import { MainLayoutComponent } from ‘./main-layout/main-layout.component’

Object.keys(PageLayouts).forEach(key => {
mainRoutes.push({
path: key,
component: MainLayoutComponent
})
})

declaració, tal com es mostra al codi d'exemple. Tot funciona perfectament amb la compilació JiT per al desenvolupament, però té els problemes tractats anteriorment amb la compilació AoT per a la producció.

diferents maneres d’escriure n

#angular