2016-08-10 4 views
2

Ich versuche das ngrx/store Beispielprojekt ein wenig mit dem folgenden Code neu zu erstellen, ich weiß, das ist ziemlich viel Overkill für eine TODO App, wollte aber die Konzepte runter holen :ngrx/store select existiert nicht

// State Model 
interface Todo { 
    id: number; 
    text: string; 
    completed: boolean; 
} 

interface TodoState { 
    entities: Todo[]; 
} 

interface AppState { 
    todos: TodoState; 
} 

// State Retrieval 
getTodos() { 
    return (state: Observable<TodoState>) => state.select(s => s.entities); 
} 

getTodoState() { 
    return (state: Observable<AppState>) => state.select(s => s.todos); 
} 

getTodosCollection() { 
    return compose(this.getTodos(), this.getTodoState()); 
} 

@Component({...}) 
class App { 
    // I'd think I should be able to type this to Array<Todo>, 
    // but that throws a compile-time error. 
    // Also, I'm assuming the $ is convention to designate 
    // a stream. 
    todos$: Observable<any>; 

    constructor(private store:Store<AppState>) { 
    this.todos = store.let(this.getTodosCollection()); 
    } 

} 

Dieser Code ist die Schaffung von zwei Kompilierung-Fehler:

Property 'select' does not exist on type 'Observable<TodoState>'. 
Property 'select' does not exist on type 'Observable<AppState>'. 

ich eine Reihe von verschiedenen Variationen auf den beobachtbaren Import versucht haben, aber das scheint keine Rolle zu, so dass ich nahm nur, was die Beispielanwendung hatte:

import {Observable} from 'rxjs/Observable'; 

Jede Hilfe wäre sehr willkommen!

Antwort

5

Es sieht aus wie Sie nicht wählen Sie importieren haben und lassen Sie die folgenden Importe ergänzt:

import '@ngrx/core/add/operator/select'; 
import 'rxjs/add/operator/let'; 
+0

Dies tat es! Danke für die Hilfe! – dardo