Angular2 Universal Server端渲染NgbTypeaheadWindow您是否已将其添加到@ NgModule.entryComponents

时间:2018-02-18 10:56:39

标签: angular webpack angular5 angular2-directives angular-universal

由于SEO改进,我正在将我的项目转移到角度通用。 我遵循了这个指南: (我使用角度版本5)  https://github.com/angular/angular-cli/wiki/stories-universal-rendering 最后,在渲染服务器和客户端之后, 当我尝试命中节点dist / server.js 它失败了,然后弹出下面的消息:

image here click

我尝试了所有的almsot,将NgbTypeaheadWindow移动到SharedModule。

首先尝试:

添加到app.module.ts,如建议的错误

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

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

    entryComponents: [NgbTypeaheadWindow]

但仍无效。

收到此错误:

  

错误输入:意外指令'NgbTypeaheadWindow in   C:/Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts'   由模块“AppModule”导入   C:/Users/benn/Documents/dev/angular_universal_without_e2e/client/src/app/app.module.ts'。   请添加@NgModule注释。

所以,我尝试将它添加到声明中,然后像这篇帖子一样导出它:

Angular 4: no component factory found,did you add it to @NgModule.entryComponents?

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

    entryComponents: [NgbTypeaheadWindow],
    exports:[NgbTypeaheadWindow]

并收到此错误:

  

错误输入:在C中键入NgbTypeaheadWindow:/Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts是声明的一部分   2个模块:C中的NgbTypeaheadModule:/Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.module.d.ts和C:/ Users / benn /中的AppModule文件的/ dev / angular_universal_without_e2e /客户/ src目录/应用/ app.module.ts!请考虑将C:/Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts中的NgbTypeaheadWindow移动到更高的模块,该模块在C中导入NgbTypeaheadModule: /Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.module.d.ts和C:/ Users / benn / Documents / dev / angular_universal_without_e2e / client中的AppModule /src/app/app.module.ts。您还可以创建一个新的NgModule,它导出并在C中包含NgbTypeaheadWindow:/Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts然后导入Cg中的NgbTypeaheadModule中的NgModule:/Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.module.d.ts和C:/ Users / benn /中的AppModule文件的/ dev / angular_universal_without_e2e /客户端/ SRC /应用/ app.module.ts。

之后,我试图将它移动到我的SharedModule但仍然。

这是我的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 { }
  

错误输入:意外指令'NgbTypeaheadWindow in   C:/Users/benn/Documents/dev/angular_universal_without_e2e/client/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead-window.d.ts'   由模块'SharedModule in。导入   C:/Users/benn/Documents/dev/angular_universal_without_e2e/client/src/app/shared/shared.module.ts'。   请添加@NgModule注释。

我尝试了app.server.module.ts但仍然。

希望你能提供帮助 感谢

1 个答案:

答案 0 :(得分:0)

导入NgbTypeaheadModule而不是与之相关的指令/组件。

导入{NgbTypeaheadModule}来自' @ ng-bootstrap / ng-bootstrap / typeahead';

@NgModule({
    declarations: [
        AppComponent,
    ],
    imports: [
         /** others modules/**
        SharedModule,
        NgbTypeaheadModule
    ],
    entryComponents: []
})