类型 '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"
我想将所有 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"