从自己的文件导出接口时出现Angular2警告

时间:2017-09-25 15:24:49

标签: angular typescript

我有大约5个接口,我正在导出并需要跨多个组件使用。这些接口都是相关的,因为它们中的每一个都包含/引用其中一个作为数据数组。

以下是一个例子:

export interface ParentData {
    UIVersion: number;
    VersionID: number;
    Rule: RuleData[];
}

export interface RuleData {
    RuleParentID: number;
    RuleVersionID: number;
    MappedValue: number;
    ProcessingOrder: number;
    KeyID: number;
    Value: string;
    IsRuleRetired: boolean;
    UserImpactCount: number;
    Attribute: AttributeData[];
}

export interface AttributeData {
    AttributeID: number;
    AttributeName: string;
    OperatorID: number;
    OperatorName: string;
    SQLOperator: string;
    AttributeValue: ValueData[];
}

export interface ValueData {
    RuleDetailID?: number;
    AttrValue: number;
    Value: string;
    IsValueRetired: boolean
}

我创建了一个接口文件,其中包含了所有这些,然后将它们导入到使用它们的组件中。

执行此操作时,我会收到错误/无法编译,说明它们已丢失或没有导出的成员。

但是,如果我将其中的所有5个单独包含在每个组件中的示例中,则会编译,只会抛出"export 'ValueData' was not found in './../../../example.component等警告。

导出相互引用的接口是否存在任何问题,这些接口包含在自己的文件中并导入到组件中?

更新

在删除所有基于组件的接口并由导入文件替换后,我重新启动了服务器。它成功编译,但是,每个接口都会收到一个警告,包括另一个接口的数组。

export 'ValueData' was not found in export 'AttributeData' was not found in export 'RuleData' was not found in

我认为现在可以忽略这一点,假设定义实际存在并且打字稿只是很奇怪..

更新2:

这些警告可能是因为我没有初始化数组?

@Input() parentRuleData: RuleData; // Rules Data

ngOnInit() {
    this.ruleFormGroup = this.toFormGroup(this.parentRuleData);
}   

private toFormGroup(data: RuleData) {
    const formGroup = this._fb.group({
        RuleParentID: [ data.RuleParentID ],
        RuleVersionID: [ data.RuleVersionID ],
        MappedValue: [ data.MappedValue],
        ProcessingOrder: [ data.ProcessingOrder ],
        KeyID: [data.KeyID ],
        Value: [data.Value],
        IsRuleRetired: [data.IsRuleRetired],
        UserImpactCount: [data.UserImpactCount]
    });

    return formGroup;
}

但是,如果我将Input更改为@Input() parentRuleData: RuleData[] = [];以及将toFormGroup(data: RuleData)更改为toFormGroup(data: RuleData[]),则会ngOnInittoFormGroup方法错误:

Argument of type 'RuleData[]' is not assignable to parameter of type 'RuleData'.

1 个答案:

答案 0 :(得分:3)

在您的上一个界面上,您遗漏了semicolon

export interface ValueData {
    RuleDetailID?: number;
    AttrValue: number;
    Value: string;
    IsValueRetired: boolean; <----
}

此外,似乎已知问题

  

https://github.com/angular/angular-cli/issues/2034