Angular 用于仅显示循环中数据中的一个名称

Angular 用于仅显示循环中数据中的一个名称,angular,typescript,angular9,Angular,Typescript,Angular9,我在component.ts文件中从api调用中获取了这些数据 [ [ { "name": "name one", "desc": "something here", }, { "name": "name two", &q

我在component.ts文件中从api调用中获取了这些数据

[ 
    [ 
        { 
            "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>