EscapeHtmlPipe неожиданного канала в escape-html.pipe.ts Пожалуйста, добавьте аннотацию @NgModule - PullRequest
0 голосов
/ 21 марта 2019

Запуск ng build --prod дает мне следующую ошибку.

ОШИБКА в: неожиданный канал 'EscapeHtmlPipe в escape-html.pipe.ts', импортированный модулем 'AppModule в app.module.ts'.Пожалуйста, добавьте аннотацию @NgModule.

Отлично работает на ng serve.Проблема только с ng build --prod

Код в файле приведен ниже

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import{ EscapeHtmlPipe } from '../../Shared/pipes/escape-html.pipe';

@NgModule({
  imports: [CommonModule],
  declarations: [EscapeHtmlPipe],
  exports: [EscapeHtmlPipe]
})
export class EscapeHtmlModule { }

Файл кода для канала указан ниже

import { Pipe, PipeTransform } from '@angular/core';
import { SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';

@Pipe({
  name: 'escapeHtml'
})
export class EscapeHtmlPipe implements PipeTransform {

  constructor(protected sanitizer: DomSanitizer) { }

  transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {
    switch (type) {
      case 'html': return this.sanitizer.bypassSecurityTrustHtml(value);
      case 'style': return this.sanitizer.bypassSecurityTrustStyle(value);
      case 'script': return this.sanitizer.bypassSecurityTrustScript(value);
      case 'url': return this.sanitizer.bypassSecurityTrustUrl(value);
      case 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value);
      default: throw new Error(`Invalid safe type specified: ${type}`);
    }
  }

}

в AppModule, который я сделалthis

import { EscapeHtmlModule } from './Module/escape-html/escape-html.module';

часть NgModule приведена ниже

NgModule({
  declarations: [
    AppComponent,
    // EscapeHtmlPipe,
    NavMenuComponent,
    OpportunityComponent,
    HomeComponent,
    FileUploadComponent,
    TinymceComponent,
    SummaryComponent,
    OpportunityListComponent
  ],
  imports: [
    BrowserModule,
    MaterialModule,
    FormsModule,
    ReactiveFormsModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    HttpClientModule,
    DragDropModule,
    ScrollDispatchModule,
    EditorModule,
    // EscapeHtmlPipe,

    DragulaModule.forRoot(), 
    ContextMenuModule.forRoot(), EscapeHtmlModule
  ],
  providers: [
    RFPDocumentService,
    ColorChangeService,
    CategoryService,
    InsertCategoryAttributeService
  ],
  bootstrap: [AppComponent],
  entryComponents:[TinymceComponent,OpportunityListComponent]
})

Но проблема даже существовала до того, как я добавил EscapeHtmlModule в промежуточное ПО, так как ранее я добавлял канал непосредственно в AppModule иэто генерировало ошибку.Любая помощь будет оценена Спасибо

1 Ответ

0 голосов
/ 21 марта 2019

Ваше сообщение об ошибке: ERROR in : Unexpected pipe 'EscapeHtmlPipe in escape-html.pipe.ts' imported by the module 'AppModule in app.module.ts'. Please add a @NgModule annotation говорит о том, что вы импортируете EscapeHtmlPipe непосредственно в AppModule.Вам нужно импортировать EscapeHtmlModule в AppModule, а не EscapeHtmlPipe.

. Вот базовый пример процесса создания общих модулей с общими Pipes (или Components и Directives):

  1. Создайте новый NgModule (который вы назвали EscapeHtmlModule)
  2. Создайте Pipe и добавьте его в declarations и exports EscapeHtmlModule.массивы
  3. Добавьте в массив imports
  4. любые другие модули, необходимые для работы канала, перейдите в AppModule и импортируйте EscapeHtmlModule (добавьте его в массив imports).)
...