You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular宿主指令输入无法在组件HTML模板中访问的问题求助

Angular宿主指令输入无法在组件HTML模板中访问的问题求助

我最近在使用Angular的宿主指令(hostDirectives)功能时踩了个坑,按照官方文档的说明,只要在hostDirectives配置里显式指定inputs,应该就能直接在组件的HTML模板里用宿主指令的输入属性,但实际操作起来却报错了,实在搞不懂哪里出问题了。

先贴一下我的代码

宿主指令的定义:

@Directive()
export class SomeDirective {
  public readonly someId = input.required<string>();
}

使用这个宿主指令的组件:

@Component({
  ...
  template: "ID {{someId}}",
  hostDirectives: [
    { 
      directive: SomeDirective, 
      inputs: ["someId"] 
    }
  ],
})
export class SomeComponent {
  ...
}

遇到的问题

当我在SomeComponent的模板里写{{someId}}时,TypeScript直接报错:

NG9: Property 'someId' does not exist on type 'SomeComponent'.

我反复看了Angular的文档,文档明确说通过这种方式配置后,不仅组件的使用者可以绑定这些输入属性,组件自身的模板也应该能直接访问。结果我问了ChatGPT,它居然让我在SomeComponent里手动加一行@Input() someId!: string;——这不仅和文档的说法完全矛盾,平白多了冗余代码,逻辑上也说不通啊,完全是画蛇添足。

现在我彻底懵了,不知道该怎么推进,有没有懂行的大佬能给我指条明路?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 13:03:00