2016-11-16 62 views
1

这里ItemService item.service.ts类型 '可观察<{}>' 是不能分配给输入“可观察<Item[]>:Rxjs

export const items = (state: any = [], {type, payload}) => { 
    switch (type) { 
    default: 
     return state; 
    } 
}; 

export interface Item { 
    id: number; 
    name: string; 
    description: string; 
}; 

export interface AppStore { 
    items: Item[]; 
    selectedItem: Item; 
}; 

@Injectable() 
export class ListService { 
    items: Observable<Array<Item>>; 
    private listModel: ItemList = new ItemList(); 

    constructor(private itemListApi: ItemListApi, private store: Store<AppStore>) { 
     this.items = store.select('items');===>Error 

    } 
} 

我收到一条错误this.items。错误是“Type”Observable < {}>'不可分配给'Observable'类型。什么地方出了错?对此有何帮助?

回答

2

这是因为你定义itemsObservable<Array<Item>>store.select('items')可能返回Observable<T>

您可以使用类型转换来告诉你期待它返回什么编译:

this.items = <Observable<Item[]>>store.select('items'); 
4

试试这个:

this.items = store.select<Array<Item>>('items'); 
+0

感谢它的工作原理。 – Khushi