类型 'Observable<any>' 不能分配给带有 rxjs5 的 angular2 中的类型 'JSON'

Type 'Observable<any>' is not assignable to type 'JSON' in angular2 with 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): error TS2322: Type 'Observable' is not assignable to type 'JSON'. [1] Property 'parse' is missing in type 'Observable'.

我想我可以将 allTickets:JSON 写成 allTickets:any 但在组件中我使用 ngFor 进行迭代 - 所以我从 ngFor 那里得到了错误需要一个数组。

提前致谢!

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

*ngFor="let ticket of allTickets | async"