Angular 6:如何使用模板引用变量来调用子方法?

Posted

技术标签:

【中文标题】Angular 6:如何使用模板引用变量来调用子方法?【英文标题】:Angular: How to use template reference variable for calling child method? 【发布时间】:2018-11-28 19:50:06 【问题描述】:

我正在尝试使用模板引用变量从父组件调用子组件的方法。我尝试如下,

navigation.component.html

<button type="button" class="btn btn-primary relative waves-light" (click)="CartTable.loadCart()" mdbWavesEffect>My Cart</button>

<app-cart-table-modal #CartTable></app-cart-table-modal>

cart-table-modal.component.ts

import  Component  from '@angular/core';


@Component(
  selector: 'app-cart-table-modal',
  templateUrl: './cart-table-modal.component.html',
  styleUrls: ['./cart-table-modal.component.scss']
)
export class CartTableModalComponent implements OnInit 

  constructor()    

loadCart()
 console.log('load cart called');


但是我得到一个错误

ERROR TypeError: jit_nodeValue_5(...).loadCart 不是函数

请告诉我,如何解决此错误.. 提前谢谢..

【问题讨论】:

无法复制:stackblitz.com/edit/…。发布一个完整的最小示例(就像我刚才所做的那样)重现问题。 Call child component method from parent class - Angular的可能重复 【参考方案1】:

您可以通过@ViewChild()装饰器从子组件调用公共方法。

child.component.ts

export class ChildComponent implements OnInit 

  constructor()    

  method1()
    console.log('logged me!');
  


parent.component.html

<div>
    <button (click)="onLogged()">Logged Me!</button>
    <child-comp #childComp></child-comp>
</div>

parent.component.ts

export class ParentComponent implements OnInit 

  @ViewChild(ChildComponent) child_component: ChildComponent;

  constructor()    

  onLogged()
    this.child_component.method1();
  


在angular.io 中阅读有关组件交互的更多信息。

【讨论】:

以上是关于Angular 6:如何使用模板引用变量来调用子方法?的主要内容,如果未能解决你的问题,请参考以下文章

ngFor(Angular 9)中的动态模板引用变量

Angular 创建富文本编辑器

如何从孩子的父母访问模板引用变量?

模板中的Angular 2重复组件引用另一个元素

Angular:为组件字段提供对服务功能的引用并从模板调用它无法按预期工作

Angular5:使用模板变量的依赖下拉列表