找不到管道''-角度升级后出错

时间:2018-11-16 14:14:17

标签: angular typescript

我正在尝试将Angular 4升级到最新版本(7.0.3),直到生产编译为止一切都很好。在其中收到:

ERROR in : Template parse errors:
The pipe 'filter' could not be found ("v class="form-group">
    <ul class="ui-select-list">
      <li [attr.name]="item.id" *ngFor="let [ERROR ->]item of data | filter : qModel" innerHtml="{{ 'AAA' | translate }}"></li>
    </ul>
</div>
"): C:/x/src/app/components/ui/fields/combo/ui.combo.html@2:44
The pipe 'translate' could not be found ("s="ui-select-list">
      <li [attr.name]="item.id" *ngFor="let item of data | filter : qModel" inn[ERROR ->]erHtml="{{ 'AAA' | translate }}"></li>
    </ul>
</div>
"): C:/x/src/app/components/ui/fields/combo/ui.combo.html@2:79

为重现错误,我从代码中创建了一个最小的存储库:https://github.com/ptrstpp950/myBugInAngular

结果如下:

  • ng build --prod app产生上述错误
  • ng build app可以100%罚款

我尝试阅读共享模块中的管道,我尝试根据指南进行更改,但仍然没有成功。

2 个答案:

答案 0 :(得分:5)

从tsconfig.json中,您似乎正在Angular 7项目中使用Ivy渲染器

如下-

"angularCompilerOptions": {
    "enableIvy": true
  }

您可以将其制作为"enableIvy": false,然后再次尝试生产。

在生产版本(ng build --prod)期间,由于树木摇晃,它会移除管道。 Ivy尚不完全兼容,只能用于测试目的。在使用Ivy之前,您需要运行ngcc转换Ivy之前的软件包以包括Ivy定义,ngcc@angular/compiler-cli的命令行工具。

请参阅以下有关常春藤渲染器的链接

https://github.com/angular/angular/blob/master/packages/core/src/render3/STATUS.md#implementation-status

https://github.com/angular/angular/issues/26436

答案 1 :(得分:0)

如果您在多个模块中使用它,则可以制作一个Shared module并从该共享模块中导出所有管道。


例如,只需创建一个共享模块,如下所示:

import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';

import { SearchFilterPipe } from './search-qafilter.pipe';
import { CapitalizePipe } from './search-question.pipe';

@NgModule({
  imports: [
    CommonModule,
    SharedRoutingModule
  ],
  declarations: [SearchFilterPipe , CapitalizePipe],
  providers: [],
  exports: [SearchFilterPipe , CapitalizePipe]
})
export class SharedModule {}

然后将此共享模块导入您喜欢的任何模块中,就可以从那里访问管道而不会引发任何错误。