输入&#39; Observable <any>&#39;不能分配给&#39; JSON&#39;在angular2中使用rxjs5

时间:2016-05-26 11:29:58

标签: json angular rxjs5

我想将所有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:输入&#39; Observable&#39;不能分配给类型&#39; JSON&#39;。   [1]财产解析&#39;类型&#39; Observable&#39;

中缺少

我想我可以将allTickets:JSON写为allTickets:any,但在组件中我使用 ngFor 进行迭代 - 所以我从ngFor得到错误,它需要一个数组。< / p>

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以将allTickets更改为类型:Observable<any>,然后在 ngFor 绑定中,您可以像这样使用异步管道:

*ngFor="let ticket of allTickets | async"