2017-10-16 88 views
0

遇到麻煩試圖找出爲什麼我一直得到這個錯誤:參數的陳述「的類型「聲明」是不能分配給類型「任何[]」

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

回答

1

服務類:

//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 = []; 
} 
相關問題