即使控制台说错,NgIf似乎总是如此。
来自以下组件html
<product-component-tree itemSku="{{item.itemSku}}" selectable="false" classes="col-md-12 col-xs-12"></product-component-tree>
将selectset设置为false ...
export class ProductComponentTree {
@Input() classes: string;
@Input() itemSku: string;
@Input() selectable: boolean;
ngOnInit() {
if (this.itemSku)
this.productDetailService.getComponents(this.itemSku, true).subscribe(x => {
this.treeData = x;
});
console.log(this.selectable); //prints false
}
}
组件的Html tmplate:
<div class="{{classes}}" *ngIf="selectable">
something
<p-tree [value]="treeData" layout="horizontal" selectionMode="checkbox" [(selection)]="selectedProducts" (onNodeSelect)="nodeSelect($event)"></p-tree>
</div>
<div class="{{classes}}" *ngIf="!selectable">
else
<p-tree [value]="treeData" layout="horizontal" [contextMenu]="productTreeCm" selectionMode="single" [(selection)]="selectedProduct"></p-tree>
<p-contextMenu #productTreeCm [model]="items"></p-contextMenu>
</div>
总是会在里面显示div!
目标: 让它正常工作并显示其他div如果可选择为假。
答案 0 :(得分:3)
执行selectable="false"
时,将字符串值传递给组件。
而且,正如你所知,“假”是一个真正的价值。 (否则,请看一下:https://dorey.github.io/JavaScript-Equality-Table/)
您需要做的是:
<product-component-tree [itemSku]="item.itemSku" [selectable]="false" ...