Angular App 从 V8 升级到 V9 后无法编译

End*_*ani 8 migration angular angular9

我最近使用官方 Angular 站点提供的本指南将我的 angular 应用程序从 V8 更新到 V9 。我按照指南中的所有步骤操作,应用程序已成功更新,但现在当我尝试构建时,我收到大量与管道指令甚至我在模板中使用的组件相关的错误。

这是管道错误的一个示例:

无法在 NgModule 中声明“TimeAgoPipe”,因为它不是当前编译的一部分。

指令错误的另一个例子:

无法绑定到“ngModel”,因为它不是“input”的已知属性

这段代码在 Angular 8 上运行良好:

<input required name="password" class="form-control mr-sm-2" type="password" placeholder="Password" [(ngModel)]="model.password"/>
Run Code Online (Sandbox Code Playgroud)

它甚至无法找到我创建的组件,即使它们已在app.module.ts文件中声明。它给了我这个错误:

'app-nav' 不是已知元素:

  1. 如果 'app-nav' 是一个 Angular 组件,那么验证它是否是这个模块的一部分。

  2. 如果“app-nav”是一个 Web 组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到该组件的“@NgModule.schemas”以抑制此消息。

这是我的app.module.ts文件,其中包含未找到的所有内容:

<input required name="password" class="form-control mr-sm-2" type="password" placeholder="Password" [(ngModel)]="model.password"/>
Run Code Online (Sandbox Code Playgroud)

更新

Instinct 和https://github.com/AndrewPoyntz/time-ago-pipe/issues/33建议的解决方案有效。你必须记住在 angular.json 上禁用 AOT 编译

Ins*_*nct 10

看起来这个模块没有针对 Angular 9 更新。我在这里找到了一个解决方法

https://github.com/AndrewPoyntz/time-ago-pipe/issues/33

import { TimeAgoPipe } from 'time-ago-pipe';

@Pipe({
    name: 'timeAgo',
    pure: false
})
export class TimeAgoExtendsPipe extends TimeAgoPipe {}

@NgModule({
    declarations: [
        TimeAgoExtendsPipe,
...
Run Code Online (Sandbox Code Playgroud)