Angular 父组件调用子组件变量定义问题

感谢几位的热情解答!


子组件:

export class ChildComponent implements OnInit{
   greeting(name:string){
      console.log("hello" + name)
   }
}

父组件模板:

<app-child #child1></app-child>

父组件控制器:

@ViewChild("child1")
child1:ChildComponent;
ngOnInit(): void{
   this.child1.greeting("Tom");
}

child1:ChildComponent; 解释为child1 的类型是 ChildComponent,可以调用子组件的方法。

我的问题是:child1:ChildComponent 这种写法类似继承吗?还是只存在于父子组件关系中的一个本地变量声明?

我概念理解有些混淆

阅读 4.9k
3 个回答
@ViewChild("child1")
child1:ChildComponent;

这段代码的意思是
第一行:你选的ViewChild的名字为child1
第二行:你定义了一个名为child1变量来操作这个ViewChild,它的类型为ChildComponent(子组件)

其实这样写更为合理

@ViewChild("child1") child1:ChildComponent;

这里只是单纯的表明这个模板变量的类型

@ViewChild("child1")
child1:ChildComponent;

这里没有继承关系,通过ViewChild的decorator, 你在父组件里拿到了子组件的一个实例, 同时指定了他的类型是ChildComponent, 这样你可以在运行时能够通过child1.的方式看到提示的方法。
所以说这里直接写成child1: any 也可以,只不过不会有提示, 最后打包编译的时候类型也都没有了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进