类型“声明”是不能分配给类型“任何[]”
问题描述:
遇到麻烦试图找出为什么我一直得到这个错误:参数的陈述“的类型“声明”是不能分配给类型“任何[]”
C:/Users/zuberiaz/Documents/ECT/ECT2/ECT2/src/app/main-panels/result-display-panel/record-display/record-display.component.ts (89,103): Argument of type '(statements: Statement[]) => void' is not assignable to parameter of type '(value: Statement) => void'.
类型和“价值”是不相容的。 类型'语句'不可分配为键入'语句[]'。 “陈述”类型中缺少属性'包含'。
这是我的组件文件:
statements: any[];
ngOnInit() {
this.recordDisplayService.getStatementsBySource('8d71e58c-e56d-4782-b695-8d6bb87ace5e').subscribe(statements => {this.statements = statements;});
this.politicalParties = [];
}
服务文件:
//Fetch statements by source id
getStatementsByUrl = 'http://api/V1/Statement/QueryDocument?properties=all';
getStatementsBySource(sourceId: string): Observable<Statement> {
return this.http.get(this.getStatementsByUrl + '/' + sourceId)
.map(data => {return this.extractData(data);})
.catch(this.handleError);
}
答
服务类:
//Fetch statements by source id
getStatementsByUrl = 'http://api/V1/Statement/QueryDocument?properties=all';
getStatementsBySource(sourceId: string): Observable<Statement> {
return this.http.get(this.getStatementsByUrl + '/' + sourceId)
.map(data => {return this.extractData(data);})
.catch(this.handleError);
}
似乎是一个返回的声明。如果你的意思是它得到多条语句,则返回类型改成这样:
getStatementsBySource(sourceId: string): Observable<Statement[]>
如果它确实返回一个语句,那么你需要改变你的组件代码:
statement: Statement;
ngOnInit() {
this.recordDisplayService.getStatementsBySource('8d71e58c-e56d-4782-b695-8d6bb87ace5e').subscribe(statement => {this.statement = statement;});
this.politicalParties = [];
}
你有一个Statement类?否则,为什么你返回Observable? –
Vega
是的,我有一个声明类 – azmatrix
我认为只需更改为Observable。最后,您还可以执行语句:Statement []; –
Vega