Angular 用于仅显示循环中数据中的一个名称
我在component.ts文件中从api调用中获取了这些数据Angular 用于仅显示循环中数据中的一个名称,angular,typescript,angular9,Angular,Typescript,Angular9,我在component.ts文件中从api调用中获取了这些数据 [ [ { "name": "name one", "desc": "something here", }, { "name": "name two", &q
[
[
{
"name": "name one",
"desc": "something here",
},
{
"name": "name two",
"desc": "something here",
},
{
"name": "another name",
"desc": "something here",
}
]
]
然后,我使用以下命令将其传递到我的component.html:
this.mydata = [result];
[结果]包含上述数据
然后我有选择:
<select name="list">
<option *ngFor="let data of mydata; value="{{ data.name }}">{{ data.name }}</option>
</select>
您的数据是一个嵌套数组。因此,当您迭代myData
属性时,会再次出现一个数组,并且没有name
和desc
可用。
试试这个:
this.mydata = result[0];
看起来您又在创建一个数组包装器[]
。它的结果是你发布的方式像[…]]
。而是从此处删除[]
:
this.mydata = result; // <---actual data may look like this = [{}, {}, ...]
this.mydata=result;// 分配mydata
时出现问题。
目前,mydata
与result
值相同。
如果您按照以下方式更新,那么您的代码将正常工作
this.mydata = result[0];
或
然后以角度代码显示数据
<select name="list">
<option *ngFor="let data of mydata;" value="{{ data.name }}">{{ data.name }}</option>
</select>
{{data.name}
关于您的问题,在定义*ngFor时缺少双引号。请发布{{mydata | json}
的屏幕截图。它应该是this.mydata=result[0]代码>尝试使用this.mydata=result代码>当前正在将结果数组包装到另一个数组中。只需使用this.mydata=result
问题应该是,您将一个数组嵌套为另一个数组的元素,因此正如John所说的*ngFor=“let data of mydata[0]”应该执行此操作。mydata=result[0]给出了我的错误:“只允许数组和iterables”,然后尝试此操作。(结果为任何[])[0];这将返回一个错误:只允许数组和iterables,然后像这样尝试<返回的代码>(Array.from(result))[0]
类型“{}”缺少类型“any[]”中的以下属性:length、pop、push、concat等。this.mydata=result[0]给出了我的错误:“只允许数组和iterables”请console.log this.mydata,这样我就能更好地理解您的问题控制台是这样显示的:[{},{},{}和当扩展0:{}1:{}2:{}时,这给了我:“Object”类型可以分配给很少的其他类型。你的意思是用“any”类型吗?
<select name="list">
<option *ngFor="let data of mydata;" value="{{ data.name }}">{{ data.name }}</option>
</select>