我是Angular的新手。我在尝试创建生成版本(ng build --prod)时收到错误。抛出的错误如下
ERROR in无法解决C中OpcionValor的所有参数:/Users/Usuario/Documents/global_workspace/hcdu_proyect/HCDU_FRONT/HCDU/src/app/modulos/anamesis/anamnesis.module.ts :(?,?) 。 ./src/main.ts中的错误 找不到模块:错误:无法解析'C:\ Users \ Usuario \ Documents \ global_workspace \ hcdu_proyect \ HCDU_FRONT \ HCDU \ src'中的'./$$_gendir/app/app.module.ngfactory' @ ./src/main.ts 4:0-74 @ multi ./src/main.ts
文件anamnesis.module.ts包含以下代码:
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {OpcionComboBox, OpcionComboBoxComplex} from '../interfaces/interfaces.module'
@NgModule({
imports: [
CommonModule,
],
declarations: []
})
export class OpcionValor implements OpcionComboBox {
constructor(private nombre: string, private valor: string) {
this.nombre = nombre;
this.valor = valor;
}
getEntityValor(): string {
return this.valor;
}
setEntityValor(valor: string) {
this.valor = valor;
}
}
export class OpcionValorObservacion extends OpcionValor implements OpcionComboBoxComplex {
observacion: string;
constructor(name: string, valor: string, observacion: string) {
super(name,valor);
this.observacion = observacion;
}
getEntityObservacion(): string {
return this.observacion;
}
setEntityObservacion(observacion: string) {
this.observacion = observacion;
}
}
export interface AnamnesisInterface {
getOpcionSeleccionadaPorNombre(nombre:string):OpcionValor;
setOpcionValorPorNombre(nombre:string, valor:string);
setOpcionValorObservacionPorNombre(nombre:string, valor:string, observacion:string);
}
如果我在开发环境中没有该错误,我不确定为什么会抛出错误。请有人帮我解决这个错误吗?
答案 0 :(得分:0)
您的模块期望其构造函数有两个输入参数,类型为string
。 Angular最不可能知道如何构建它。我假设某个地方你有一个顶级的AppModule或类似的东西:
@NgModule({
imports: [ OpcionValor ],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
它需要注入一个OpcionValor
模块但不能,因为它不知道传递什么构造函数参数。
我认为您可能需要进行一些重新设计。 nombre
和valor
真的应该是OpcionValor
的成员,还是属于某个组件? OpcionValor甚至应该是一个模块,还是它应该是一个组件?
答案 1 :(得分:0)
我通过添加有关ts文件名的类声明解决了这个问题。 模块文件名为 anamnesis.module.ts ,因此我必须添加以下类声明:
export class AnamnesisModule { }
所以,我的模块代码是: 文件名: anamnesis.module.ts
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {OpcionComboBox, OpcionComboBoxComplex} from '../interfaces/interfaces.module'
@NgModule({
imports: [
CommonModule
],
declarations: []
})
**export class AnamnesisModule { }**
export class OpcionValor implements OpcionComboBox {
nombre: string;
valor: string;
constructor(nombre: string, valor?: string) {
this.nombre = nombre;
this.valor = valor;
}
..................
}
export class OpcionValorObservacion extends OpcionValor implements OpcionComboBoxComplex {
observacion: string;
constructor(name: string, valor?: string, observacion?: string) {
super(name,valor);
this.observacion = observacion;
}
.........
}
我不确定为什么但它有效。我想文件名和所需的类声明之间存在关系。