Input()Bind上的Angular 5调用函数

Input()Bind上的Angular 5调用函数,angular,input,data-binding,angular5,Angular,Input,Data Binding,Angular5,抱歉,如果标题令人困惑,不知道该如何表达。我试图调用一个函数来获取数据并将其传递给子组件 父.component.ts: getData(arg: string[]) { let data: any[]; // Do stuff here to get data return data; } <app-child [myData]="getData(['test'])"></app-child> parent.component.html:

抱歉,如果标题令人困惑,不知道该如何表达。我试图调用一个函数来获取数据并将其传递给子组件

父.component.ts

getData(arg: string[]) {
    let data: any[];

    // Do stuff here to get data

    return data;
}
<app-child [myData]="getData(['test'])"></app-child>
parent.component.html

getData(arg: string[]) {
    let data: any[];

    // Do stuff here to get data

    return data;
}
<app-child [myData]="getData(['test'])"></app-child>
child.component.html

<h3>{{ myData[0].test }}</h3>
{{myData[0].test}
但是,当我运行应用程序时,我收到一个错误,说明它
无法读取未定义的
的属性“0”。我做错了什么?我不想创建一个绑定到
[myData]
的变量,因为这样会有很多变量。我也会在其他地方使用这个函数


任何帮助都将不胜感激,谢谢

您的函数参数不应与[]一起使用,请将其更改为

<app-child [myData]="getData('test')"></app-child>

并在孩子身上使用安全导航操作员,以确保数据不是空的

<h3>{{ myData[0]?.test }}</h3>
{{myData[0]?.test}

我不明白。为什么要删除
[]
?该函数接受一个数组。当我删除它时,仍然会出现相同的错误。如果函数接受数组,则只需使用数组变量。我最终使用了隐式
参数
变量。不知道为什么它不起作用。谢谢调用getData()时是否发生http请求?或订阅任何其他服务?没有。我也觉得很奇怪。