此处有采访者:https://plnkr.co/edit/te67zdtkVkNCUzEtW5XO?p=preview 看app.ts
背景
父组件有一个数组,并在数组中显示一个元素。 ChildComponent是一个显示数组的列表,其中包含在单击元素时设置的变量selectedIdx
。
selectNumber(idx: number) {
this.selectedIdx = idx;
}
ParentComponent通过将子项存储为局部变量selectedIdx
并使用#child
访问它来从子项中获取child.selectedIdx
值。
问题:
子组件中的selectedIdx
与访问它的父组件之间的绑定对于数组中除第一个元素(索引0)之外的每个元素都是完美的 - 如果单击1
,则元素在索引0处,Selected Number In Parent: _
消失。
这意味着*ngIf
为false,表示selectedIdx
为null
。
然而,情况并非如此,因为当我在子组件的selectNumber()
函数中设置断点时,this.selectedIdx
被设置为0.父检索必须有一些古怪的事情发生值为0,然后认为它为空?
任何帮助表示感谢,非常感谢。
基于:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#parent-to-child-local-var
答案 0 :(得分:3)
这是因为在package application;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class ImageLoader {
protected ImageView wareHouseImage;
private Object diamondImage;
private Object wallImage;
private Object mapImage;
private Object crateImage;
public ImageLoader(ImageView wareHouseImage) {
this.wareHouseImage = showWareHouseImage();
}
public ImageView getWareHouseImage() {
return wareHouseImage;
}
public void setWareHouseImage(Image wareHouseImage) {
this.wareHouseImage = showWareHouseImage();
}
public static ImageView showWareHouseImage() {
ImageView wareHouse = new ImageView();
wareHouse.setFitHeight(45);
wareHouse.setFitWidth(45);
Image wareHouseImage = new Image("application/warehouse.png");
wareHouse.setImage(wareHouseImage);
return wareHouse;
}
public Object getDiamondImage() {
return diamondImage;
}
public void setDiamondImage(Object diamondImage) {
this.diamondImage = diamondImage;
}
public Object getWallImage() {
return wallImage;
}
public void setWallImage(Object wallImage) {
this.wallImage = wallImage;
}
public Object getMapImage() {
return mapImage;
}
public void setMapImage(Object mapImage) {
this.mapImage = mapImage;
}
public Object getCrateImage() {
return crateImage;
}
public void setCrateImage(Object crateImage) {
this.crateImage = crateImage;
}
0 == Javascript
中,所以当您与0进行比较时,false
表达式会返回*ngIf
。
将其更改为:
false
This answer有一个很好的表格。