Javascript 具有字符串值和*ngIf的角度形式
如果表单为空,我尝试不在列表中显示表单。表单的值是字符串。我尝试使用*ngIf,但它不起作用,我仍然可以看到列表中的空白位置。我怎样才能解决这个问题?(在图中,ISRawMaterialInspection和ISRawMaterialRiskState为空。) 以下是HTML:Javascript 具有字符串值和*ngIf的角度形式,javascript,html,css,angular,typescript,Javascript,Html,Css,Angular,Typescript,如果表单为空,我尝试不在列表中显示表单。表单的值是字符串。我尝试使用*ngIf,但它不起作用,我仍然可以看到列表中的空白位置。我怎样才能解决这个问题?(在图中,ISRawMaterialInspection和ISRawMaterialRiskState为空。) 以下是HTML: <input matInput class="mt-20" formControlName="IsOxidizable" *ngIf="form.get('IsOx
<input matInput class="mt-20" formControlName="IsOxidizable" *ngIf="form.get('IsOxidizable').value"/>
<input matInput class="mt-20" formControlName="ISRawMaterialInspection" *ngIf="!!form.get('ISRawMaterialInspection').value"/>
<input matInput class="mt-20" formControlName="ISRawMaterialRiskState" *ngIf="form.get('ISRawMaterialRiskState').value"/>
在Eliseo的一些评论输入之后,我之前的回答需要一些编辑 正如Eliseo所说 如果typescript中的(a)条件为false,如果a等于未定义, null,“、0或false 所以OP可能没有使用原始字符串,而是使用字符串对象 如果typescript中的(a)条件为false,如果a等于未定义, null、“、0或false仅适用于基本数据类型
最后,感谢Eliseo的澄清,帮助我变得更好。更改HTML并使用
<input matInput class="mt-20" formControlName="IsOxidizable" *ngIf="form.get('IsOxidizable').value && form.get('IsOxidizable').value !== ''"/>
}
它是双向工作的。您能试着检查控件而不是控件值吗?form.get('israwmeterialriskstate')我也试过了,但没用。你能与
共享完整的html吗?参见这个stackblitz示例:你的服务返回的值是空字符串还是空字符串?如果为空,您就可以了,否则您的支票将被打开!=''如果你能粘贴完整的html/ts,那会很有帮助。如果你总是从你的服务中得到一个值,那么你的ngIf将始终为真,因此总是显示和不相关。不,火箭,如果值,值!=''@你是对的。我已经删除了我的评论,以免让OPs更加沮丧,并在您的帮助下编辑了我的答案。对不起,我有时太挑剔了,但是如果a=0,b=false和c=“”,如果(a)被评估为false,如果(b)被评估为false,如果(c)也被评估为false。当您编写if(新布尔值(false))
时,由于[Boolean:false]是一个“对象”(yes是一个奇怪的对象),所以给出true-新数字(0)和新字符串(“”)也会出现同样的情况-
<input matInput class="mt-20" formControlName="IsOxidizable" *ngIf="form.get('IsOxidizable').value && form.get('IsOxidizable').value !== ''"/>
<input matInput class="mt-20" formControlName="ISRawMaterialInspection" *ngIf="form.get('ISRawMaterialInspection').value form.get('IsOxidizable').value !== ''"/>
<input matInput class="mt-20" formControlName="ISRawMaterialRiskState" *ngIf="form.get('ISRawMaterialRiskState').value form.get('IsOxidizable').value !== ''"/>
var a = new String('');
if (a) -> will evaluate to true
if (new Boolean(false)) -> evaluates to true
if (new String('')) -> evaluates to true
if (new Number(0)) -> evaluates to true
<input matInput class="mt-20" formControlName="IsOxidizable" *ngIf="form.get('IsOxidizable').value && form.get('IsOxidizable').value !== ''"/>
ngAfterViewInit() {
setTimeout(() => {
if (this.rawMaterialInformation) {
this.rawMaterialInformation.IsOxidizable = this.rawMaterialInformation.IsOxidizable?
"Oksitlenme :" + this.rawMaterialInformation.IsOxidizable:'';
this.rawMaterialInformation.MeltingTemperature = this.rawMaterialInformation.MeltingTemperature?
"Eritilme Sıcaklığı : " +
this.rawMaterialInformation.MeltingTemperature:'';