在这tutorial之后,我创建了一个可重用和可定制的模式组件.然而,我有一个问题. 假设有两个组件,A和B,在这两个组件中,我都使用modal组件打开了一个模型.对于组件A,当用户单击提交按钮时,必须执行组件A的函数A(),而对于组件B,则必须执行组件B的函数B().如何使模式.ts文件能够访问并执行函数A()和函数B()?

如果可能的话,我不想有一个全局服务文件,所有函数都在那里,或者将所有相关函数移动到modal.ts文件,相反,我喜欢保持每个单独的组件干净和独立,但优化它们之间的交互,这样我就只传递函数的名称和所需的输入参数.有人知道实现这一目标的最佳做法是什么吗?先谢谢你了.

模式的.TS:

  open(): Promise<boolean> {
     ...
  }

  async close(): Promise<void> {
      const result = await this.modalConfig.onClose();
      this.modalRef.close(result);  
  }

  async dismiss(): Promise<void> {
    ...
  }
}

config模式的.TS:

export class ModalConfig {
  modalTitle: string;
  data: string = '';
  onClose?(): Promise<boolean> | boolean;
}

modal的.html:

<ng-template #modal>
  <div class="modal-header">
    <button type="button" (click)="dismiss()">cancel</button>
    <button type="button" (click)="close()">Ok</button>
  </div>
</ng-template>

推荐答案

service中移动Dismit()和Close()方法,并从那里调用它们.这应该解决了你的问题.

Typescript相关问答推荐

带有微前端的动态React路由问题

输入元素是类型变体的对象数组的正确方法是什么?'

异步动态生成Playwright测试,显示未找到测试

带switch 的函数的返回类型的类型缩小

如何在处理数组时缩小几个派生类实例之间的类型范围?

如何使用Geojson模块和@Types/Geojson类型解析TypeScrip中的GeoJSON?

在另一个类型的函数中,编译器不会推断模板文字类型

有什么方法可以类型安全地包装import()函数吗?

AngularJS服务不会解析传入的Json响应到管道中的模型

Vue3 Uncaught SyntaxError:每当我重新加载页面时,浏览器控制台中会出现无效或意外的令牌

如何在方法中正确地传递来自TypeScrip对象的字段子集?

有没有办法防止类型交集绕过联合类型限制?

在抽象类属性定义中扩展泛型类型

如何将通用接口的键正确设置为接口的键

类型脚本中参数为`T`和`t|unfined`的重载函数

我可以使用JsDocs来澄清Typescript实用程序类型吗?

在tabel管理区域react js上设置特定顺序

无法使用prisma中的事务更新记录

为什么 Typescript 无法正确推断数组元素的类型?

Typescript 编译错误:TS2339:类型string上不存在属性props