可以通过@Input将数据从父对象发送到子对象,也可以通过@Output从子对象调用父对象上的方法,但我希望完全相反,也就是从父对象调用子对象上的方法.基本上是这样的:

@Component({
  selector: 'parent',
  directives: [Child],
  template: `
<child
  [fn]="parentFn"
></child>
`
})
class Parent {
  constructor() {
    this.parentFn()
  }
  parentFn() {
    console.log('Parent triggering')
  }
}

子元素:

@Component({
  selector: 'child',
  template: `...`
})
class Child {
  @Input()
  fn() {
    console.log('triggered from the parent')
  }

  constructor() {}
}

背景是一种"获取"请求,即从子元素那里获取最新状态.

现在我知道我可以通过服务和主题/观察来实现这一点,但我想知道是否还有更直接的东西?

推荐答案

我想这些可能就是你想要的:

https://angular.io/guide/component-interaction#parent-interacts-with-child-via-local-variable

https://angular.io/guide/component-interaction#parent-calls-an-viewchild

可以使用模板中的局部变量或父级组件类中的@ViewChild decorator访问子属性和方法.

Typescript相关问答推荐

类型ElementTypes不可分配给类型ElementTypes.word'

为什么在将条件返回类型的字符串赋给数字时没有类型错误?

net::BER_RECTION_REUSED和Uncatch使用Axios和TanStack-Query useMutation时未捕获错误(DelivercMutation)

typescript抱怨值可以是未定义的,尽管类型没有定义

有没有可能使用redux工具包的中间件同时监听状态的变化和操作

路由链接不会导航到指定router-outlet 的延迟加载模块

有条件地删除区分的联合类型中的属性的可选属性

如何判断对象是否有重叠的叶子并产生有用的错误消息

为什么我的查询钩子返回的结果与浏览器的网络选项卡中看到的结果不同?

如何通过TypeScrip中的函数防止映射类型中未能通过复杂推理的any值

刷新时保持当前名称的Angular

为什么S struct 类型化(即鸭子类型化)需要非严格类型联合?

自定义 Select 组件的类型问题:使用带逗号的泛型类型<;T与不带逗号的<;T&>;时出错

try 使Angular依赖注入工作

如何使用useSearchParams保持状态

组件使用forwardRef类型脚本时传递props

Svelte+EsBuild+Deno-未捕获类型错误:无法读取未定义的属性(读取';$$';)

将带有额外id属性的Rust struct 展平回TypeScript单个对象,以返回wasm-bindgen函数

为什么 TypeScript 类型条件会影响其分支的结果?

广义泛型类型不加载抽象类型上下文