【问题标题】:Type 'Observable<any>' is not assignable to type 'JSON' in angular2 with rxjs5类型 'Observable<any>' 不能分配给使用 rxjs5 在 angular2 中键入 'JSON'
【发布时间】: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 得到错误,它需要一个数组。

提前致谢!

【问题讨论】:

    标签: json angular rxjs5


    【解决方案1】:

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

    *ngFor="let ticket of allTickets | async"
    

    【讨论】:

    • 是的,它确实有效。如此明显的错误......谢谢=)
    猜你喜欢
    • 2018-08-14
    • 2017-08-12
    • 2018-08-30
    • 2023-04-10
    • 1970-01-01
    • 2020-05-28
    • 2019-04-22
    • 2018-03-09
    • 2018-04-19
    相关资源
    最近更新 更多