【发布时间】:2016-05-26 11:29:57
【问题描述】:
我想将我的所有 EventEmitter 更改为 Subjects,因为这是共享变量和状态而不是发出事件的推荐方式。
但是现在我遇到了一个问题,我只是不明白如何解决它。这是示例代码:
@Injectable()
export class TicketsService implements OnInit {
private _url = "http://127.0.0.1:3000/api/getAllTickets";
private _refreshTickets:Subject<JSON> = new Subject<JSON>();
public allTickets:JSON;
private _url_postNewTicket = "http://127.0.0.1:3000/api/postNewTicket";
constructor(private _http:AuthHttp) {
this.allTickets = this._refreshTickets
.mergeMap(() => this._http.get(this._url))
.map((res:Response) => res.json())
.cache();
}
refreshAllTickets() {
console.log("refresh all tickets..");
this._refreshTickets.next(null);
}
}
编译器给我以下错误:
public/angular/app/tickets.service.ts(26,9):错误 TS2322:类型“Observable”不可分配给类型“JSON”。 [1] 'Observable' 类型中缺少属性 'parse'。
我想我可以将allTickets:JSON 写为allTickets:any,但在组件中我使用 ngFor 进行迭代 - 所以我从 ngFor 得到错误,它需要一个数组。
提前致谢!
【问题讨论】: