在父组件中,按如下所示填充数组:
myarray = [];
...
... // forloop
this.myarray.push({id: <someid>, name: <somename>});
在我的父模板中,将其设置为孩子的输入
<childcomponent [myarray]="myarray"></childcomponent>
在子组件中,我将输入声明为:
@Input() myarray;
但是当我尝试迭代并获取长度时,我无法进行迭代并且length为0。然后我尝试执行“ typeof”,它返回一个对象。我试图用console.log(myarray)编写控制台,它给了我
[]
0: {id: <someid>, name: <somename>}
答案 0 :(得分:1)
答案 1 :(得分:-1)
您的代码没有问题。 如果您打开Google控制台,请创建一个数组,例如
let a = [];
typeof(a); // "object"
最初,您要传递给输入的元素是一个空数组, 那么您正在向其中推送一些项目,因此,如果您观察到要传递给Input的数组有两种状态:1.Empty,2。某些对象被压入了数组。
如果您订阅该输入,并在控制台上记录其值,则会得到两个不同的输出。
@Input()
public set myArray(myArray: Array<any>) {
if (myArray) {
console.log(myArray);
}
}
只要值有任何变化,它将console.log myArray的值