Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有字符串值和*ngIf的角度形式_Javascript_Html_Css_Angular_Typescript - Fatal编程技术网

Javascript 具有字符串值和*ngIf的角度形式

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

如果表单为空,我尝试不在列表中显示表单。表单的值是字符串。我尝试使用*ngIf,但它不起作用,我仍然可以看到列表中的空白位置。我怎样才能解决这个问题?(在图中,ISRawMaterialInspection和ISRawMaterialRiskState为空。)

以下是HTML:

<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:'';