angular 2 的 Observables 不工作(Http 方法)
Observables with angular 2 isn't working (Http method)
我的服务有问题。我有一项服务从 HTTP 模块获取 JSON 并用它填充 class 'olders'。但是当我调用我的服务时,它什么也没做,我的 class 年长者仍然未定义......
如果我在 yearbook.component.html 中创建一个 *ngFor 指令,我什么也得不到...
我认为我的问题来自我的服务,但我不知道错误在哪里......
即使我把 console.log 放在 subscribe
里面
我的yearbook.component:
import {Component} from '@angular/core'
import {Olders} from './olders'
import {OldersService} from './olders.service'
@Component({
moduleId: module.id,
selector: 'yearbook',
templateUrl: 'yearbook.component.html',
})
export class YearbookComponent {
olders : Olders[];
constructor(
private _oldersService : OldersService
){}
ngOnInit() {
this._oldersService.getOldersfromAPI()
.subscribe( res => {this.olders = res,
console.log(this.olders)},
err => console.error(err.status)
);
}
}
和 olders.service :
import {Injectable} from '@angular/core'
import {Http} from '@angular/http'
import {Olders} from './olders'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/do'
@Injectable ()
export class OldersService {
constructor(private _http:Http) {
}
getOldersfromAPI(){
return this._http.get('../CDN/olders.json')
.do(x => console.log(x))
.map(olders => {olders = olders.json()});
}
}
提前感谢大家的回答
您的映射中缺少 return 语句:
.map(olders => {olders = olders.json()});
应该是:
.map(olders => { return olders = olders.json()});
我的服务有问题。我有一项服务从 HTTP 模块获取 JSON 并用它填充 class 'olders'。但是当我调用我的服务时,它什么也没做,我的 class 年长者仍然未定义...... 如果我在 yearbook.component.html 中创建一个 *ngFor 指令,我什么也得不到... 我认为我的问题来自我的服务,但我不知道错误在哪里...... 即使我把 console.log 放在 subscribe
里面我的yearbook.component:
import {Component} from '@angular/core'
import {Olders} from './olders'
import {OldersService} from './olders.service'
@Component({
moduleId: module.id,
selector: 'yearbook',
templateUrl: 'yearbook.component.html',
})
export class YearbookComponent {
olders : Olders[];
constructor(
private _oldersService : OldersService
){}
ngOnInit() {
this._oldersService.getOldersfromAPI()
.subscribe( res => {this.olders = res,
console.log(this.olders)},
err => console.error(err.status)
);
}
}
和 olders.service :
import {Injectable} from '@angular/core'
import {Http} from '@angular/http'
import {Olders} from './olders'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/do'
@Injectable ()
export class OldersService {
constructor(private _http:Http) {
}
getOldersfromAPI(){
return this._http.get('../CDN/olders.json')
.do(x => console.log(x))
.map(olders => {olders = olders.json()});
}
}
提前感谢大家的回答
您的映射中缺少 return 语句:
.map(olders => {olders = olders.json()});
应该是:
.map(olders => { return olders = olders.json()});