如何解决Angular AOT 产生 NG8001、NG8002 和 NG8003 错误
我正在开发一个正在生产的中型企业 Angular 应用。在为我的最新更改创建 PR 之前,我使用 AOT 运行构建,以确保在合并 PR 时应用程序不会在构建步骤中中断。当我在没有 AOT 标志的情况下构建项目时,它构建正确并且一切正常。当我添加 AOT 标志时,我从应用程序的几乎每个组件中得到数百个 NG8001、NG8002 和 NG8003 错误。很难说,因为错误太多以至于终端输出被截断。
以下是一些错误的示例:
这些错误中的许多似乎与无法绑定到 ngModel 和 ngForm 有关。但这以前从未发生过,我的模块导入了 FormsModule。我遵循了此处找到的建议:https://angular.io/errors/NG8001 但无济于事。我不知道可能是什么问题。这个问题的原因是什么?我该如何解决?
编辑 - 附加信息
我能够获得完整长度的输出,现在有了更多的信息,我相信这些信息使我们更接近真正的问题。
LoggerModule 实际上就是我在这个 PR 中添加的代码。我不明白错误是什么以及为什么它只会在使用 AOT 编译时出现。
这是 LoggerModule 的代码:
import { HttpClient } from '@angular/common/http';
import { ModuleWithProviders,NgModule } from '@angular/core';
import { CapturedPayload } from './captured-payload';
import { LogLevel } from './log-level';
import { LoggerConfigurationToken } from './logger-configuration';
import { LoggerService } from './logger.service';
import { TransportTemplate } from './transport-template';
import { TransporterToken } from './transporter';
import { ConsoleTransporter } from './transporters/console.transporter';
import { HttpTransporter } from './transporters/http.transporter';
function consoleTransporterFactory() {
return new ConsoleTransporter();
}
@NgModule()
export class LoggerModule {
static config(config: LoggerModuleConfig): ModuleWithProviders<LoggerModule> {
const httpTransporterFactory = (httpClient: HttpClient) => {
const template: TransportTemplate = <T>(payload: CapturedPayload) => {
return ({ ...payload,timestamp: payload.timestamp.toISOString() } as unkNown) as T;
}
const transporterConfig = { url: config.url };
return new HttpTransporter(template,httpClient,transporterConfig);
}
return {
ngModule: LoggerModule,providers: [
{
provide: TransporterToken,useFactory: consoleTransporterFactory,multi: true,},{
provide: TransporterToken,useFactory: httpTransporterFactory,deps: [HttpClient],{
provide: LoggerConfigurationToken,useValue: { level: config.logLevel },{
provide: LoggerService,],};
}
}
export interface LoggerModuleConfig
{
logLevel: LogLevel,url: string
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。