无法解析

时间:2017-06-21 19:47:49

标签: angularjs typescript build production-environment

我是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);
}

如果我在开发环境中没有该错误,我不确定为什么会抛出错误。请有人帮我解决这个错误吗?

2 个答案:

答案 0 :(得分:0)

您的模块期望其构造函数有两个输入参数,类型为string。 Angular最不可能知道如何构建它。我假设某个地方你有一个顶级的AppModule或类似的东西:

@NgModule({
    imports: [ OpcionValor ],
    bootstrap: [ AppComponent ]
})
export class AppModule {
}

它需要注入一个OpcionValor模块但不能,因为它不知道传递什么构造函数参数。

我认为您可能需要进行一些重新设计。 nombrevalor真的应该是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;
  }

  .........
}

我不确定为什么但它有效。我想文件名和所需的类声明之间存在关系。