【问题标题】:Angular4 PrimeNG dialog as componentAngular4 PrimeNG 对话框作为组件
【发布时间】:2018-04-16 01:04:21
【问题描述】:

我正在努力解决角度/初始问题。我是 angular4 的新手,我正在尝试将对话框作为自己的组件打开和关闭。我有一个 list-component 数据表加载所有数据。如果您点击一行并按下打开按钮,dialog-component 应该会打开。但是当我关闭对话框并想要重新打开它时,它不起作用。

list-component.html:

<button class="btn btn-default openBtn" type="button" 
    pButton label="Open" [disabled]="jobClosed" (click)="showDialog()">
</button>

<app-details [display]="display"></app-details>

list-component.ts

display: boolean = false;

showDialog() {
    this.display = true;
}

dialog-component.html

<p-dialog [(visible)]="display" modal="modal" [responsive]="true" 
  (onAfterHide)="onClose()">
   <p>Runs!</p>
</p-dialog>

dialog-component.ts

@Input() display: boolean;

onClose(){
    this.display = false;
}

问题是,当我单击按钮时对话框打开,但是当我关闭它并想再次打开它时,它不再打开。有人知道为什么吗?我读过,我需要创建一个@Output 变量并使用一个EventEmitter,但我不知道这是否属实以及它是如何工作的。我希望有人知道为什么对话框在我关闭一次后不再重新打开。

【问题讨论】:

  • 你为什么不用弹窗?
  • 最近的版本有动态对话框。

标签: angular primeng primeng-dialog


【解决方案1】:

我自己做的。正如我所说,这里需要一个 EventEmitter。

list-component.html:

<button class="btn btn-default openBtn" type="button" 
    pButton label="Open" [disabled]="jobClosed" (click)="showDialog()">
</button>

<app-details [display]="display" (displayChange)="onDialogClose($event)"></app-details>

list-component.ts:

display: boolean = false;

showDialog() {
    this.display = true;
}

onDialogClose(event) {
   this.display = event;
}

dialog-component.html:

<p-dialog [(visible)]="display" modal="modal" [responsive]="true">
   <p>Runs!</p>
</p-dialog>

dialog-component.ts:

  @Input() display: boolean;
  @Output() displayChange = new EventEmitter();

  onClose(){
    this.displayChange.emit(false);
  }

  // Work against memory leak if component is destroyed
  ngOnDestroy() {
    this.displayChange.unsubscribe();
  }

【讨论】:

  • 如果您还没有弄清楚,这将是我的答案。
  • dialog-component.html 中缺少小块,在

    运行!

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 2019-06-26
  • 2017-10-19
  • 2018-09-11
  • 1970-01-01
相关资源
最近更新 更多