Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.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
Html ngIf不工作_Html_Angular_Angular Ng If - Fatal编程技术网

Html ngIf不工作

Html ngIf不工作,html,angular,angular-ng-if,Html,Angular,Angular Ng If,我在父模板中使用ngIf。我有以下代码 在html中: <button *ngIf="saveButton" type="button" class="button-success" (click)="save()">Save</button> <add (setSavebutton)="setSavebutton($event)"></add> 在我的孩子(add)中,我做: @Output()设置保存按钮:EventEmitter=newev

我在父模板中使用ngIf。我有以下代码

在html中:

<button *ngIf="saveButton" type="button" class="button-success" (click)="save()">Save</button>
<add (setSavebutton)="setSavebutton($event)"></add>
在我的孩子(add)中,我做:

@Output()设置保存按钮:EventEmitter=neweventemitter();
if(this.form.valid){
console.log(this.form.valid);//true
此.setSavebutton.emit(true);
}
两个console.log返回true,但我的按钮未显示

我做错了什么

编辑

我在附近找到了一份工作。。他们的孩子的代码是一样的

在父html中:

<button [hidden]="!saveButton" type="button" class="button-success" (click)="save()">Save</button>
保存

为什么隐藏的有效而ngIf无效?

您的问题不清楚代码从何处调用。 一般解决方法:

constructor(private cdRef:ChangeDetectorRef){}

private setSavebutton(_boolean: any) {
    this.saveButton = _boolean;
    this.cdRef.detectChanges();
    console.log(this.saveButton);  // true
}

有了更多信息,就可以建议如何修复根本原因。

(单击)=“save()”
调用
save()
,但没有
save()
方法。这并不重要。这是关于按钮没有显示的问题。我不会添加我所有的代码,你会不高兴的。你可以添加相关的代码,或者调整你的代码,让它对我们有意义。你从何处调用
setSaveButton()
?这不是一个反应式表单,但它应该是这样工作的:S但遗憾的是它没有。它会在表单中加载数据如果表单(具有所需验证器的formbuilder)有效,它将在父级上启用提交按钮。我稍微编辑了我的问题,但它似乎[隐藏]起作用。“仍然没有回答问题”,这是因为问题没有提供足够的信息。我假设运行在Angulars zone之外的代码调用您的
setSaveButton()
method.Angular没有收到更改检测周期到期的通知,因此不会更新绑定。它在子级上使用@Output运行。顺便说一句,它没有解决这个问题。它会弄乱数据,并用错误的数据刷新数据。
<button [hidden]="!saveButton" type="button" class="button-success" (click)="save()">Save</button>
constructor(private cdRef:ChangeDetectorRef){}

private setSavebutton(_boolean: any) {
    this.saveButton = _boolean;
    this.cdRef.detectChanges();
    console.log(this.saveButton);  // true
}