【问题标题】:ngIf not workingng如果不工作
【发布时间】:2018-03-21 14:04:01
【问题描述】:

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

在html中:

<button *ngIf="saveButton" type="button" class="button-success" (click)="save()">Save</button>
<add (setSavebutton)="setSavebutton($event)"></add>

在组件中:

private setSavebutton(_boolean: any) {
    this.saveButton = _boolean;
    console.log(this.saveButton);  // true
}
private save() { // save my item set by child }

在我的孩子(添加)我这样做:

@Output() setSavebutton: EventEmitter<any> = new EventEmitter<any>();

 if (this.form.valid) {
        console.log(this.form.valid); // true
        this.setSavebutton.emit(true);
    }

console.log 都返回 true 但我的按钮没有显示。

我在这里做错了什么?

编辑

我找到了解决方法。他们的孩子的代码是一样的。

在父 html 中:

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

为什么 hidden 有效而 ngIf 无效?

【问题讨论】:

  • (click)="save()" 调用save(),但没有save() 方法。
  • 有没有不重要。这是关于按钮未显示的问题。我不会添加我所有的代码,你不会高兴的。
  • 您可以添加相关代码,或调整您的代码,使其对我们有意义。你从哪里打电话给setSaveButton()
  • 这不是一种反应形式,但它应该像这样工作:S 但遗憾的是它没有..
  • 如果表单(带有所需验证器的表单构建器)有效,它将在表单中加载数据,它将启用父级上的提交按钮。

标签: html angular angular-ng-if


【解决方案1】:

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

constructor(private cdRef:ChangeDetectorRef){}

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

有了更多信息,可以建议如何解决根本原因。

【讨论】:

  • 我稍微编辑了我的问题,但似乎 [hidden] 有效。
  • “仍然没有回答问题”,那是因为问题没有提供足够的信息。我假设在 Angulars 区域之外运行的代码会调用您的 setSaveButton() 方法。 Angular 不会收到更改检测周期到期的通知,因此不会更新绑定。
  • 它在 Child 上使用 @Output 运行。顺便说一句,它并没有解决它。它会弄乱并用错误的数据刷新数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 2015-08-02
  • 2014-01-22
  • 1970-01-01
  • 2016-10-25
  • 2017-12-05
相关资源
最近更新 更多