angular - 将从 rxjs “from” 运算符获取的对象的 observable 转换为数组的 observable
问题描述
我在遍历 Observable 时遇到了这个错误。我知道它正在考虑将 getNumbers 方法的返回值作为对象而不是数组。但是,我不想处理数据并创建数组,然后将其传递给查看。
我希望它是数字数组的 Observable 并将这个数组与 ngFor 和 async 一起使用来显示每个元素。请让我知道如何实现这一目标。
这是代码
import { Injectable } from '@angular/core';
import { Observable, from } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor() {}
getNumbers(): Observable<number> {
return from([1, 2, 3, 4, 5]);
}
}
app.component.ts
import { Component } from '@angular/core';
import { ApiService } from './api.service';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
number$;
constructor(api:ApiService)
{
this.number$=api.getNumbers();
}
}
这是视图逻辑
<ul>
<li *ngFor="let num of this.number$|async">
{{num}}
</li>
</ul>
这里是源代码参考
解决方案
这里
getNumbers(): Observable<number> {
return from([1, 2, 3, 4, 5]);
}
生成的 observable 立即发出五个值,从 1 到 5。如果要渲染[1, 2, 3, 4, 5]
,则需要 1Observable<number[]>
和 2,of
而不是from
。
getNumbers(): Observable<number[]> {
return of([1, 2, 3, 4, 5]);
}
推荐阅读
- asterisk - 使用 Asterisk CLI 通道发起命令设置 callerID
- python - Python的带有中断模式的pyserial
- sql-server - 安装 SQL Server Express 后缺少 SQL Server 数据库
- excel - 通过vba从网站表中获取数据到excel
- sql - 日期生成器到表变量
- python-3.x - 如何在不发送邮件 python 的情况下对邮件发送功能进行单元测试?我正在使用 unittest.mock 函数
- r - 如何查找参数中字符出现的百分比?
- prestashop - 如何使用 {{url entity=} 在 Prestashop 中生成管理控制器链接?
- .htaccess - 如果使用 htacess 在 url 中出现一个单词,则重定向到其他 url
- angular - 角度输入绑定无法正常工作