Prerendering failed because of error: ReferenceErr

2019-02-26 10:15发布

I am trying to use PrimgNG in my angular2 app (primeng 2.0.5, Angular 2.0.x). I can get the ButtonModule and InputTextModule work but not the AutoCompleteModule.

I am getting this error as soon as I add AutoCompleteModule to the application.

An unhandled exception occurred while processing the request.

Exception: Call to Node module failed with error: Prerendering failed because of error: ReferenceError: Event is not defined

app.component.html:

<button pButton type="button" (click)="onclick()" >Click here</button>
<p-autoComplete [(ngModel)]="text" [suggestions]="results" (completeMethod)="search($event)"></p-autoComplete>

app.component.ts:

import { Component, OnInit } from '@angular/core';
import {ButtonModule, ToggleButtonModule} from 'primeng/primeng';

@Component({
   selector: 'app',
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css'],
})

export class AppComponent {
  text: string;
  results: string[];
  search(event){
    this.results = ['1','2','3'];
  }

  onclick():void{
    alert("This is a test");
  }
}

app.module.ts:

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { UniversalModule } from 'angular2-universal';
import { HttpModule } from '@angular/http';
import { FormsModule } from '@angular/forms';

import { AppComponent } from './components/app/app.component'
import {ButtonModule, AutoCompleteModule} from 'primeng/primeng';

@NgModule({
    bootstrap: [AppComponent],
    declarations: [
        AppComponent
    ],
    imports: [
        HttpModule,
        FormsModule,
        RouterModule.forRoot([
            { path: '', redirectTo: 'home', pathMatch: 'full' },
            { path: 'home', component: HomeComponent },
            { path: 'api-list', component: ApiListComponent },
            { path: 'api-add', component: ApiAddComponent },
            { path: '**', redirectTo: 'home', pathMatch: 'full' }
        ]),
        AutoCompleteModule,
        UniversalModule
    ]
})
export class AppModule {
}

Everything works fine if I remove AutoCompleteModule. Please help.

3条回答
Bombasti
2楼-- · 2019-02-26 11:03

Just take off pre-rendering.

<app>Loading...</app>

I found this answer a few weeks back here on stackoverflow, tried to search for it again to link it here, but didn't yield any results. If anyone finds it please link it here. Thank you

查看更多
欢心
3楼-- · 2019-02-26 11:18

I was able to solve this by changing the asp-prerender tag in Index.cshtml page that is generated by ASP.Net Core Templates.I missed the point about ASP.Net Core templates from my question.

I changed the tag from

<app asp-prerender-module="ClientApp/dist/main-server">Loading...</app>

to

<app asp-ng2-prerender-module="ClientApp/dist/main-server">Loading...</app>
查看更多
淡お忘
4楼-- · 2019-02-26 11:20

Use following

1..Loading.... 2.boot. Browser.t s or boot.client.ts file import the following import es6-shim

查看更多
登录 后发表回答