[英]Returning array as Observable to Behavior subject
我根據待完成的待辦事項在路由中應用角度為6的待辦事項過濾器,僅在單擊已完成鏈接時才顯示已完成(已選中)待辦事項。 我設法獲得在todoService(getTodos)函數中完成的待辦事項。 但是由於getTodos是Observable的,因此不允許我返回todos數組
這是我的服務代碼
public getTodos(query = ''): Observable<Todo[]>{
if(query === 'completed' || query === 'active'){
const isCompleted = query === 'completed';
let todos = this.allTodos.filter(todo => todo.completed === isCompleted);
console.log(todos);
// this.storageService.getTodos().subscribe(todos => this.allTodos.filter(todo => todo.completed === isCompleted));
// return this.todos.next('todos');
return this.todos.asObservable();
}else{
return this.todos.asObservable();
}
}
Stackblitz中項目的完整鏈接
PS:我是新手,現在仍在學習Observables / rxjs
您的服務中已經有一個BehaviorSubject
。 您可以在服務中添加一個公共的Observable
:
public todos$: Observable<Todo[]> = this.todos.asObservable();
然后在您的getTodos
方法中:
public getTodos(query = ''): Observable < Todo[] > {
if (query === 'completed' || query === 'active') {
...
this.todos.next(todos);
}
else {
...
}
}
在您的組件中,您可以使用以下方法subscribe
此Observable
來獲取todos
:
todos;
constructor(private todoService: TodoService, ...) {}
...
this.todoService.todos$.subscribe(todos => this.todos = todos);
Todo[] myTodos;
todoService.getTodos('').subscribe(response => {
//here you can response - what you return from service
this.myTodos=response;
});
響應就是您從表單服務返回的東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.