2017-08-06 137 views
0

我已經創建了一個Angular應用程序,它允許用戶對特定媒體文件(如視頻)進行評論。發佈評論時,會發起一個http POST調用,將評論存儲在數據庫中。訂閱API調用:Angular2

加載組件時,ngOnInit通過發起http GET調用從數據庫加載所有註釋。但是,當發佈新評論時,如果沒有刷新頁面,評論不會更新。他們是否可以在評論發佈時更新評論列表而無需刷新頁面?

回答

0

爲了簡單起見,讓我們假設你有一個組件ViewComponent,顯示的評論列表,以及評論表單添加新的評論。 ViewComponent具有public comments: Comment[]這樣的註釋的本地狀態,該註釋由您的ngOnInit()中的GET API調用初始化。

我假設你有一個服務,如CommentsService,使api調用。 當您添加評論時,將調用函數addComment(comment),該函數處理POST請求。當POST成功時,評論將添加到您的評論數組中。

如果服務返回可觀察到的(這裏沒有退訂):

addComment(comment: Comment): void { 
    this.commentService.add(comment) 
    .subscribe(comment => { 
     this.comments.push(comment); 
    }); 
} 

如果服務返回一個承諾:

addComment(comment: Comment): void { 
    this.commentService.add(comment) 
    .then(comment => { 
     this.comments.push(comment); 
    }); 
} 
2

subscribehttp.postsuccess發佈後添加到您的帖子陣列this.posts.push(newPost)