我有一个动态表组件(DataTableComponent),它接受各种@inputs并包含一个@output:
<app-data-table (buttonClickedEvent)="buttonClickedEvent($event)" [data]="testTableSetup.data" [mutatorArray]="testTableSetup.mutatorArray" [hiddenProps]="testTableSetup.hiddenProps" [showSelectColumn]="testTableSetup.showSelectColumn" [showEditColumn]="testTableSetup.showEditColumn"
[actionButtons]="testTableSetup.actionButtons">
</app-data-table>
我还有一个动态对话框组件,该组件可以带有可选参数,因此我可以传入其他组件以在其中显示:
openDialog(): void {
const dialogConfig = new MatDialogConfig();
let dialogConfigModel: DialogConfigModel = {
dynamicFormModel: [],
additionalComp: DataTableComponent,
click_ButtonText: "Save",
close_ButtonText: "Close",
dialogTitle: "SOME TITLE"
};
dialogConfig.data = dialogConfigModel;
const dialogRef = this._dialog.open(DynamicDialogComponent, dialogConfig);
dialogRef
.afterClosed()
.pipe(
take(1),
takeUntil(this._destroyed$)
)
.subscribe(results => {
// Stuff Here.
});
}
该组件确实按预期显示在我的对话框中,但是显然没有数据。
如何从此openDialog()方法中访问DataTableComponent @inputs和@output?我需要能够设置@inputs数据并在触发@output方法时获取。这不可能吗?还是有更好的方法来做到这一点?我已经检查了喷油器,但无法使实施工作。
答案 0 :(得分:2)
您将需要通过服务与他们进行沟通:
https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service
由于它们之间没有直接关系,因此您可以在两者中注入服务,
并触发一个可观察的物体,
聆听第二个变化;)