http - Angular2 HTTP 使用 observables 订阅显示数据未定义

标签 http angular rxjs observable

我不知道我做错了什么但不知何故我无法读取数据,尽管数据来自服务器作为响应,甚至当我放置时数据也在服务 extractData 方法中显示控制台,但在订阅功能内的组件中,它给了我未定义的信息。帮助我我做错了什么,我假设这是异步的问题但是,我不知道如何纠正它。 任何帮助将不胜感激。 提前致谢

Component.ts

import { Component, Input, OnInit } from '@angular/core';
import {AdminService} from './admin.service';
import {logistics} from '../shared/model/logistics';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toPromise';
import { Observable }     from 'rxjs/Observable';
import {Response } from '@angular/http';
@Component({
    moduleId:module.id,
    selector: 'admin',
    templateUrl: 'admin.component.html',
    styleUrls:['admin.component.css'],
    providers:[AdminService]
})

export class AdminComponent implements OnInit{
   @Input() public allocatedAssetsList: logistics[];


    mode = 'Observable';
    public errorMsg = '';
    constructor(private adminService: AdminService) {

    }

    ngOnInit(){
        this.listByEmpId("123");

    }

    listByEmpId(empId:string){

        this.adminService.getAllocatedAssets(empId).subscribe(
        res => this.allocatedAssetsList = res,
        error =>  this.errorMessage = <any>error);
    }
}

Service.ts

import { Injectable }     from '@angular/core';
import { Http, Response } from '@angular/http';
import { Hero }           from './hero';
import { Observable }     from 'rxjs/Observable';
import { Headers, RequestOptions } from '@angular/http';
import {logistics} from '../shared/model/logistics';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toPromise';


@Injectable()
export class AdminService {
    constructor (private http: Http) {}
    private listAssetsURL = '/api/logistics/list/';  // URL to web API

    private extractData(res: Response) {
        let body = res.json();
        return body || { };
    }

    private handleError (error: any) {
        // In a real world app, we might use a remote logging infrastructure
        // We'd also dig deeper into the error to get a better message
        let errMsg = (error.message) ? error.message :
            error.status ? `${error.status} - ${error.statusText}` : 'Server error';
        console.error(errMsg); // log to console instead
        return Observable.throw(errMsg);
    }

    getAllocatedAssets (empId: string): Observable<logistics[]> {

        this.listAssetsURL+= empId;
        //let body = JSON.stringify({ empId });
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });

        return this.http.get(this.listAssetsURL)
            .map(this.extractData)
            .catch(this.handleError);
    }
}

最佳答案

listByEmpId(empId:string){

    this.adminService.getAllocatedAssets(empId).subscribe(
    res => {
      this.allocatedAssetsList = res;
      console.log(this.allocatedAssetsList);
    },
    error =>  this.errorMessage = <any>error);
}

关于http - Angular2 HTTP 使用 observables 订阅显示数据未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38761439/

相关文章:

Angular2,相对导航(后退两级../../)

javascript - 防止 RxJS 中异步可管道运算符过早完成

intellij-idea - delayWhen 已弃用 RxJs

javascript - 我们可以在可观察流上使用高通滤波器来检测震动事件吗?

http - 是否可以在没有 cookie 的情况下发送 HTTP 请求?

wordpress - 无法访问 WordPress 管理仪表板

php - 检查 URL scheme 是 HTTP 还是 HTTPS

angular - 错误: 'Error during cleanup of component' while running angular test cases

Angular 4 Http拦截器,,我在 "ng serve"时收到错误

jquery - 在两个 angular.json 和 Angular 模块中使用 jQuery