我有大约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
以及toFormGroup(data: RuleData)
以及CC_5更改为toFormGroup(data: RuleData[])
,则ngOnInit
和toFormGroup
方法抛出错误:
Argument of type 'RuleData[]' is not assignable to parameter of type 'RuleData'.
在您的最后一个接口上,您缺少semicolon
export interface ValueData {
RuleDetailID?: number;
AttrValue: number;
Value: string;
IsValueRetired: boolean; <----
}
此外,似乎是已知的问题
https://github.com/angular/angular-cli/issues/2034