我在角度2应用程序中使用primeng并面临此问题(stackoverflow question)
虽然在接受的答案中提供的plunkr有效但在我的场景中没有 . 我有一个单独的组件,它根据父组件的输入加载 . 我希望在子组件关闭/隐藏时切换可见性标志 .
这是代码片段
<p-dialog header="Assets Management" [(visible)]="showDialog" modal="modal" [closable]="true" (onHide)="close()" appendTo="body">
.. some content ..
</p-dialog>
在组件中,我有:
@Component({
selector: 'view-car-colors',
templateUrl: '/view-car-colors.html',
inputs: ['showDialog'],
outputs: ["onCloseDialog"],
})
export class ViewCarColorsComponent {
private showDialog: boolean = false; //default close
private onCloseDialog: EventEmitter<any> = new EventEmitter();
public close(): void {
this.showDialog = false;
//emit this to its parent
this.onCloseDialog.emit({ hasChanges: true });
}
}
最后在我的父组件中,我称之为:
<view-car-colors [showDialog]="showCarColorsDialog" (onCloseDialog)="onCarColorsCloseDialog($event)"></view-car-colors>
根据按钮单击更改 showCarColorsDialog
的位置 .
private onCarColorsCloseDialog($event: any): void {
this.showCarColorsDialog = false;
if ($event.hasChanges) {
//fetch the changes again
this.getCarColors();
}
}
我已经在多个地方使用了primeng控件,它们都工作正常,但只是有这个问题所以我确定它不能因为版本 .
3 回答
试试
(onAfterHide)="close()"
.https://github.com/primefaces/primeng/issues/956
在
onHide
没有用之后,我找到了一个使用getter / setter的解决方法:在我的孩子组件中:
在父模板中:
在Component中,我收到emit事件:
尝试实施:
并在html文件中将modal =“modal”更改为modal =“true”