subscribe is not a function error when trying to use JSON file in Angular 2
subscribe is not a function error thrown when trying to use JSON file in Angular 2
我正在尝试将 JSON
文件导入我的服务,但收到此错误
Error: Uncaught (in promise): TypeError: this._qs.getBasicInfo(...).subscribe is not a function(…)
截至目前,我的 service
文件看起来像这样
@Injectable()
export class QuestionService {
BasicInfoData: Observable<any>;
constructor(private http: Http){}
getBasicInfo() {
this.BasicInfoData = this.http.get('app/questionnaire/questions.json').map(res =>
res.json()).subscribe(data => this.BasicInfoData = data ) as Observable<any>
return this.BasicInfoData;
}
}
我的 component
看起来像这样
@Component({
moduleId : module.id,
selector : 'questionnaire-page',
templateUrl : './questionnaire.component.html',
providers : [ QuestionService ]
})
export class QuestionnairePage implements OnInit, OnChanges {
BasicInfo: Observable<any>;
constructor(private _qs: QuestionService, private fbuild: FormBuilder) {}
ngOnInit() {
this._qs.getBasicInfo().subscribe( data => this.BasicInfo = data );
console.log(this.BasicInfo);
}
}
在尝试从我的服务中调用数据之前,我让它工作得非常好
this.http.get('app/questionnaire/questions.json').subscribe(res => {
this.Questions = res.json()
console.log(this.Questions);
});
我开始尝试使用同样的东西,在阅读时,我添加了 Observable
。我遇到另一个 post 关于 RXJS
说他们的问题是在数据到达之前直接订阅数据,他们的解决方法是先使用 .map()
然后订阅它。它将我的错误从 undefined
错误更改为我现在得到的错误,所以我认为这是朝着正确方向迈出的一步。我一直在来回尝试各种事情,它要么会产生另一个错误,表明它在此之前中断,要么我只是从同一个代码片段中得到同样的错误。为什么会这样?
这段代码returns一个Subscription
getBasicInfo() {
this.BasicInfoData = this.http.get('app/questionnaire/questions.json').map(res =>
res.json()).subscribe(data => this.BasicInfo = data ) as Observable<any>
return this.BasicInfoData;
}
}
subscribe
是 Observable
而非 Subscription
的方法。
你想要的大概是
getBasicInfo() {
return this.http.get('app/questionnaire/questions.json')
.map(res => res.json());
}
这样会返回一个可以订阅的 Observable
。
我正在尝试将 JSON
文件导入我的服务,但收到此错误
Error: Uncaught (in promise): TypeError: this._qs.getBasicInfo(...).subscribe is not a function(…)
截至目前,我的 service
文件看起来像这样
@Injectable()
export class QuestionService {
BasicInfoData: Observable<any>;
constructor(private http: Http){}
getBasicInfo() {
this.BasicInfoData = this.http.get('app/questionnaire/questions.json').map(res =>
res.json()).subscribe(data => this.BasicInfoData = data ) as Observable<any>
return this.BasicInfoData;
}
}
我的 component
看起来像这样
@Component({
moduleId : module.id,
selector : 'questionnaire-page',
templateUrl : './questionnaire.component.html',
providers : [ QuestionService ]
})
export class QuestionnairePage implements OnInit, OnChanges {
BasicInfo: Observable<any>;
constructor(private _qs: QuestionService, private fbuild: FormBuilder) {}
ngOnInit() {
this._qs.getBasicInfo().subscribe( data => this.BasicInfo = data );
console.log(this.BasicInfo);
}
}
在尝试从我的服务中调用数据之前,我让它工作得非常好
this.http.get('app/questionnaire/questions.json').subscribe(res => {
this.Questions = res.json()
console.log(this.Questions);
});
我开始尝试使用同样的东西,在阅读时,我添加了 Observable
。我遇到另一个 post 关于 RXJS
说他们的问题是在数据到达之前直接订阅数据,他们的解决方法是先使用 .map()
然后订阅它。它将我的错误从 undefined
错误更改为我现在得到的错误,所以我认为这是朝着正确方向迈出的一步。我一直在来回尝试各种事情,它要么会产生另一个错误,表明它在此之前中断,要么我只是从同一个代码片段中得到同样的错误。为什么会这样?
这段代码returns一个Subscription
getBasicInfo() {
this.BasicInfoData = this.http.get('app/questionnaire/questions.json').map(res =>
res.json()).subscribe(data => this.BasicInfo = data ) as Observable<any>
return this.BasicInfoData;
}
}
subscribe
是 Observable
而非 Subscription
的方法。
你想要的大概是
getBasicInfo() {
return this.http.get('app/questionnaire/questions.json')
.map(res => res.json());
}
这样会返回一个可以订阅的 Observable
。