2017-10-05 73 views
-1

我試圖設置一個平均堆棧crud應用程序。路線和功能是使用郵遞員設置和測試的。我得到所有路線的正確答案。現在我正在嘗試添加Angular應用程序在內部調用路由的視圖部分。我正在嘗試設置一個基本的獲取路線。以下是我的部分代碼:Angular 4 - 映射HTTP JSON響應

import { Component, OnInit } from '@angular/core'; 
import { UserService } from '../user.service'; 
@Component({ 
    selector: 'app-user', 
    templateUrl: './user.component.html', 
    styleUrls: ['./user.component.css'] 
}) 
export class UserComponent implements OnInit { 
    users: {}; 
    constructor(private userService: UserService) { } 
    ngOnInit() { 
    this.getUsers(); 
    } 
    getUsers() { 
    this.userService.getAllUsers().subscribe(data => this.users = data); 
    } 
} 

和服務包含以下代碼:

import { Injectable } from '@angular/core'; 
import { Http } from '@angular/http'; 
import 'rxjs/add/operator/map';  
@Injectable() 
export class UserService {  
    constructor(private http: Http) { }  
    getAllUsers() { 
    this.http.get('/api/users') 
     .map(res => res.json()); 
    }  
} 

使用郵遞員路線的樣本響應如下:

{ 
    "status": true, 
    "err": null, 
    "data": [ 
     { 
      "_id": "59d5db344c46e83a14b94616", 
      "name": "test" 
     }, 
     { 
      "_id": "59d5db3c4c46e83a14b94617", 
      "name": "hello" 
     } 
    ] 
} 

它總是告訴我有以下錯誤: Property 'subscribe' does not exist on type 'void'.

我在做什麼錯了?有人能指出我做這個的標準方法嗎?

+1

缺少return語句是一個簡單的打字錯誤是題外話上SO。 –

回答

2

試試這個:

你忘了你的getAllUsers返回()

getAllUsers() { 
    return this.http.get('/api/users') 
     .map(res => res.json()); 
    }