0
我有两位代码,一位工作,一位不工作。这是第一个(工作)版本:无法在用户中分配变量
this.jobs = this.listingsService
.getListings(this.title)
.subscribe(
res => {console.log(JSON.parse(res));}
);
这正确记录我的服务发送到控制台的JSON对象。但是:
this.jobs = this.listingsService
.getListings(this.title)
.subscribe(
res => {this.list = JSON.parse(res);}
);
不起作用。当我尝试将此列表记录到订阅服务器之外的控制台时,它将返回undefined。任何人都知道我在这里做错了什么?
而且,这里是我的服务:
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Injectable()
export class ListingsService{
constructor(private http: Http){}
private url = 'http://localhost:3000/'
getListings(query: string){
return this.http.get(this.url + query).map(res => res.json());
}
}
,并在其整体的组成部分:
import { Component, OnInit, OnChanges } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { DepluralizePipe } from './depluralize.pipe';
import { ListingsService } from './listings.service'
import 'rxjs/Rx';
@Component({
selector: 'listings',
templateUrl: './listings.component.html',
pipes: [DepluralizePipe],
providers: [ListingsService]
})
export class ListingsComponent{
title:string;
list;
jobs;
constructor(private activatedRoute: ActivatedRoute,
private listingsService: ListingsService){}
ngOnInit(){
this.activatedRoute.params.subscribe(
params => this.title = params['title']
)
this.jobs = this.listingsService
.getListings(this.title)
.subscribe(
res => {this.list = JSON.parse(res);}
);
}
}
凡在你的代码,你尝试'“登录this.list到控制台”'? –
我在移动设备上,所以我不能编辑它,但它应该在ngOnInit中,但在this.jobs订阅之外 – user114338
'this.list'成员将不具有值,直到异步操作'getListings'已经完成,所以如果你尝试在它完成之前记录它,你会得到'undefined'。可能是这种情况。 –