angular - Angular 设置 @inputs 并从不相关的组件访问 @outputs
问题描述
我有一个动态表组件(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 方法被触发时获取。这不可能吗?还是有更好的方法来实现这一点?我已经检查了注射器,但我无法让实施工作。
解决方案
您需要通过服务与它们进行通信:
https
://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service
因为它们之间没有直接关系,您可以注入服务在两者中,
并从一个中触发一个可观察的,
以收听第二个中的变化;)
推荐阅读
- android - Android-Studio 支持多种屏幕尺寸
- python - 尝试连接 IP 摄像机但未发现错误且无流
- java - 无法将 IntelliJ Idea 配置为使用 @Immutables 注释
- api - 来自 Flutter 中 PHP 的 API 流(不是 Firebase)
- metaprogramming - 如何在 Perl 6 中使类参数化?
- android - 找不到 androidx.legacy:legacy-support-v4:27.0.2
- c# - OnPointerUp 事件上的 C#reactiveX 多点触控拖动清除缓冲区
- ajax - 如何在 AMP 中检查响应是否为空?
- firebase - 删除查询参数和?来自 Firebase 重定向中的 URL
- javascript - 如何检测鼠标指针是否超出我的部分