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 }]després de l'anterior forEach i veure totes les rutes de la matriu com s'esperava. També per a aclariments, aquestmainRoutes.push({
path: second,
component: SecondComponent
})@NgModule({
…
imports: [
RouterModule.forRoot(mainRoutes),
ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URLel bucle es fa abans del
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)
import * as PageLayouts from ‘…/page-layouts.json’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ó.
import { MainLayoutComponent } from ‘./main-layout/main-layout.component’Object.keys(PageLayouts).forEach(key => {
mainRoutes.push({
path: key,
component: MainLayoutComponent
})
})
diferents maneres d’escriure n
#angular