Estoy moviendo mi proyecto a angular universal debido a mejoras en SEO. Seguí esta guía: (estoy usando la versión angular 5) https://github.com/angular/angular-cli/wiki/ stories-universal-rendering y finalmente, después de renderizar el servidor y el lado del cliente, cuando intento presionar el nodo dist / server.js ha fallado, y me aparece el mensaje a continuación:

imagen aquí haga clic

Probé almsot todo, mover el NgbTypeaheadWindow a un SharedModule.

Primer intento:

Agregando a app.module.ts como el error sugerido

import { NgbTypeaheadWindow } from '@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window';

@NgModule({
    declarations: [
        AppComponent,
    ],
    imports: [
         /** others modules/**
        SharedModule,
        NgbTypeaheadWindow
    ],

    entryComponents: [NgbTypeaheadWindow]

Pero aún no funciona.

Obteniendo este error:

ERROR en: Directiva inesperada 'NgbTypeaheadWindow en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.tsModule' App 'importado por el módulo en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/src/app/app.module.ts '. Agregue una anotación @NgModule.

Entonces, intenté agregarlo también a las declaraciones y luego exportarlo como sugiere esta publicación:

Angular 4: sin fábrica de componentes encontrado, ¿lo agregó a @ NgModule.entryComponents?:

@NgModule({
    declarations: [
        AppComponent,
        NgbTypeaheadWindow
    ],
    imports: [
        SharedModule,
    ]

    entryComponents: [NgbTypeaheadWindow],
    exports:[NgbTypeaheadWindow]

Y obtén este error:

ERROR en: Escriba NgbTypeaheadWindow en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts es parte de las declaraciones de 2 módulos: NgbTypeaheadModule en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.module.d.ts y AppModule en C: / Documents / benn / dev /angular_universal_without_e2e/client/src/app/app.module.ts! Considere mover NgbTypeaheadWindow en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts a un módulo superior que importa NgbTypeaheadModules /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.module.d.ts y AppModule en C: / Users / benn / Documents / dev / angular_universal_without_e2 /src/app/app.module.ts. También puede crear un nuevo NgModule que exporte e incluya NgbTypeaheadWindow en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts y luego importe ese NgModule en NgbTypeaheadModule en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.module.d.ts y AppModule en C / / Users Documentos / dev / angular_universal_without_e2e / client / src / app / app.module.ts.

Después de eso, intenté moverlo a mi SharedModule pero aún así.

Aquí está mi SharedModule:

import { NgbTypeaheadWindow } from '@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window';

        @NgModule({
      imports: [CommonModule,NgbTypeaheadWindow],
      declarations: [CaruselComponent],
      exports: [CommonModule, FormsModule, CaruselComponent,NgbTypeaheadWindow],

    })
    export class SharedModule { }

ERROR en: directiva inesperada 'NgbTypeaheadWindow en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts' importado por el módulo 'SharedModule en C: /Users/benn/Documents/dev/angular_universal_without_e2e/client/src/app/shared/shared.module.ts '. Agregue una anotación @NgModule.

Lo intenté en app.server.module.ts pero aún así.

Espero que puedas ayudar gracias

0
John doe 18 feb. 2018 a las 13:56

2 respuestas

La mejor respuesta

Lo arreglé al no elegir renderizarlo en el lado del servidor con IsPlatFormServer e isPlatFormBrowser

0
John doe 27 feb. 2018 a las 09:43

Importe el NgbTypeaheadModule en lugar de las directivas / componentes relacionados con él.

Importar {NgbTypeaheadModule} desde '@ ng-bootstrap / ng-bootstrap / typeahead';

@NgModule({
    declarations: [
        AppComponent,
    ],
    imports: [
         /** others modules/**
        SharedModule,
        NgbTypeaheadModule
    ],
    entryComponents: []
})
0
Daniel Netzer 18 feb. 2018 a las 11:11