繁体   English   中英

角http.get不起作用

[英]angular http.get not working

这是我的服务TS文件:

import { Http } from "@angular/http";
import { Inject, Injectable } from "@angular/core";
import { Observable } from "rxjs/Observable";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

@Injectable()
export class ListService {

constructor(private http: Http, @Inject('BASE_URL') private baseURL: string) {}

public getAllLists(): Observable<ListModel[]> {
    return this.http.get(this.baseURL + 'api/List/LoadLists').map(resp => resp.json());
}

}

export interface ListModel {
ListID: number;
ListType: string;
ListValue: string;
ListOrder: number;
}

这是我的组件TS文件:

import { Component, OnInit } from '@angular/core';
import { ListModel, ListService } from '../shared/list/list.service';

@Component({
selector: 'job-post',
templateUrl: './job-post.component.html',
styleUrls: ['./job-post.component.scss'],
providers: [ListService]
})

export class JobPostComponent implements OnInit {

private lists: ListModel[];
private listService: ListService;

constructor(listService: ListService) {
    this.listService = listService;
}

ngOnInit() {
    this.listService.getAllLists()
        .subscribe(lists => this.lists = lists);
    console.log(this.lists);
}

}

在我的ngOnInit事件中,this.lists在控制台语句中以未定义的形式返回,如果我将鼠标悬停在“订阅”部分,它将显示“非法返回语句”。 但是,Chrome表示“ http.get”本身可以正确返回,并且此时我可以看到数据,因此我知道控制器方法是可以的。

我简要地从组件TS文件本身进行了此工作,但是我认为最好将其分离到服务文件中,因为我需要多个地方的列表。

据我所知,我已经正确地遵循了所有教程,但是显然我遗漏了一些东西。 有任何想法吗?

Http请求是异步的。 您需要在subscribe中编写console.log。

ngOnInit() {
 this.listService.getAllLists()
  .subscribe(lists => {
    this.lists = lists;
    console.log(this.lists);
  }
}

另外,您需要在应用程序中使用HttpClientModule 不推荐使用HttpModule

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM