我正在使用angular js和node js作为后端来构建学校项目,我试图使用EventBrite中的Angular JS在前端显示事件,花了几个小时检查了不同的教程后,我写了这个代码
Node JS代码:
router.get('/', (req, res)=>{
axios.get(`${EventsBriteAPI}`).then(result=>{
let relevantData = result.data.data.events
res.status(200).json(relevantData);
console.log(results );
})
.catch(error => {
res.status(500).send(error);
})
});
我的服务代码:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class EventsService {
uri = 'http://localhost:4600/events';
constructor(private httpClient: HttpClient) {}
getAllEvents(){
return this.httpClient.get(this.uri);
}
}
我的组件代码
import { Component } from '@angular/core';
import { EventsService } from './events.service';
import { Observable } from 'rxjs/internal/Observable';
@Component({
selector: 'events',
templateUrl: 'events.Component.html'
})
export class EventsComponent {
title = "List of events";
eventObservable : Observable<any[]> ;
constructor(service: EventsService){
this.eventObservable = service.getAllEvents();
console.log(this.eventObservable);
}
}
运行代码时出现此错误 src / app / component / events / events.component.ts(21,5):错误TS2322:无法将类型“可观察”分配给类型“可观察”。 “对象”类型可分配给很少的其他类型。您的意思是改用“ any”类型吗? 类型“ Object”缺少类型“ any []”中的以下属性:length,pop,push,concat和26个以上属性。而且在我的前端没有显示任何内容
您能帮我吗?
答案 0 :(得分:0)
除非您使用async
管道或有任何特定要求,否则我们不需要使用 Observable
类型变量。
您可以执行以下操作
EventsComponent.ts
eventObservable: any = [];
constructor(private service: EventsService) {
this.service.getAllEvents().subscribe((response: any) =>{
this.eventObservable = response;
console.log(this.eventObservable);
});
}
我们通常使用 ngOnInit()
来调用不在constructor()
中的api数据。