类型“声明”是不能分配给类型“任何[]”

问题描述:

遇到麻烦试图找出为什么我一直得到这个错误:参数的陈述“的类型“声明”是不能分配给类型“任何[]”

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); 
} 
+0

你有一个Statement类?否则,为什么你返回Observable ? – Vega

+0

是的,我有一个声明类 – azmatrix

+0

我认为只需更改为Observable 。最后,您还可以执行语句:Statement []; – Vega

服务类:

//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 = []; 
}