angular - 遍历 BehaviorSubject 模板层的值
问题描述
我在显示我的 BehaviorSubject 数据时遇到问题。我已经看到了这种带有订阅 Observable 的异步管道的 BehaviorSubject 迭代
服务
todo.service.ts
@Injectable()
export class TodoService {
todos$: BehaviorSubject<Todo[]> = new BehaviorSubject<Todo[]>( [] ) ;
readonly todoEndPoint = environment.endpoint + "todos"
constructor( private $http: HttpClient) {}
getAllTodos(): Observable<Todo[]>{
return this.$http.get<Todo[]>( this.todoEndPoint )
.pipe(
tap( val => this.todos$.next( val ))
)
}
}
我希望它使用的组件
export class TodoListComponent implements OnInit {
constructor( public $todo: TodoService ) {
$todo.getAllTodos().subscribe()
}
ngOnInit() {
}
}
模板层
<div *ngFor="let todo of $todo.todos$ | async">
{{ todo.text }}
</div>
-------------------------------------------------- - - - - 编辑 - - - - - - - - - - - - - - - - - - - - - ------------------------- 我收到此错误
ERROR 错误:尝试比较“[object Object]”时出错。只允许使用数组和可迭代对象
是否有可能遍历 BehaviorSubject 的数据流
-------------------------------------------------- - - - - 解决方案 - - - - - - - - - - - - - - - - - - - - - ---------------- 我的后端发送了一个数组不是数组的对象。那是问题现在改变了对数组的响应
解决方案
在役:
@Injectable()
export class TodoService {
readonly todoEndPoint = environment.endpoint + "todos"
constructor( private $http: HttpClient) {}
getAllTodos(): Observable<Todo[]>{
return this.$http.get<Todo[]>( this.todoEndPoint );
}
}
在组件中:
export class TodoListComponent implements OnInit {
public todoitems$: Observable<Todo[]>;
constructor( private $todo: TodoService ) {
}
ngOnInit() {
this.todoitems$ = this.$todo.getAllTodos();
}
}
在模板中:
<div *ngFor="let todo of todoitems$ | async">
{{ todo.text }}
</div>
推荐阅读
- arrays - char* 指针数组修改
- rest - REST API 设计:什么是独特的操作或资源
- flutter - 颤动中 SliverAppBar 和 ListView 之间的奇怪空间
- c# - 如何访问函数应用程序中的图像 url
- seaweedfs - 分配文件密钥的 Master API 中的“计数”是什么意思?
- java - Java中线程间共享变量的问题(11)
- javascript - Adding gravity to billiard physics in JS canvas animation
- ffmpeg - 当我尝试使用解流器从微软团队下载视频时出现未知的 FFmpeg 错误
- javascript - 显示结果 mongodb nodejs
- vue.js - Vuelidate 两个表单在一个组件中