2017-10-19 196 views
1

我想通過異步管道加載ngfor服務數據,但我現在面臨的一個問題: 這是我的組件:InvalidPipeArgument:'[對象對象],[對象對象],[對象對象],[對象對象],[對象對象],[對象對象],

<app-book-list *ngFor="let app of apps | async | serachBox:searchBooksByName | filterSearch:showTechBooks:showMgmBooks:showFictionBooks " 
    [bookdetails]="app"></app-book-list> 

在此組件的應用程序是從何而來的服務。

在我component.ts文件:

 public apps= []; 
    ngOnInit() { 
    this.ServerService.getBookDetails() 
     .then((data)=>{ 
     this.apps = data; 
     }) 
    } 

而且下面是承諾:

getBookDetails(){

let promise = new Promise((resolve,reject)=>{ 
    return this.http.get('https://lib-http-ng.firebaseio.com/bookdetails.json') 
     .toPromise() 
     .then((res)=>{ 
      const data = Object.values(res.json()); 
      resolve(data[0]) 
     }) 

}) 
return promise; 

} 我得到有關異步管道錯誤。

1.

Type '{}' is not assignable to type 'Promise<any>'. 
+0

您的代碼使用幾個管道。哪個管道導致錯誤?什麼值導致錯誤? –

+0

@GünterZöchbauer它應該''|異步',不應該嗎? 「管'AsyncPipe'」 – Pac0

+0

你是對的。如果你刪除了其他管道,你仍然會得到相同的錯誤。這會導致https://stackoverflow.com/help/mcve這對於SO問題中的代碼通常是一個好主意。 –

回答

0
this.ServerService.getBookDetails() 
    .then((data)=>{ 
    console.log(data); 
    this.apps = data; 
    }) 

應該

this.apps = this.ServerService.getBookDetails() 

或刪除| async

+0

如果我刪除異步,那麼我必須重新加載頁面以顯示數據。數據採用異步方式。 –

+0

在這種情況下,'this.ServerService.getBookDetails()'中可能有錯誤。第二種選擇呢? –

+0

沒有第二個選項不會工作。強制相同的行爲。 –