【问题标题】:Sending output from child component to parent Angular将输出从子组件发送到父 Angular
【发布时间】:2020-04-04 18:46:26
【问题描述】:

我正在尝试将实时文本从我的孩子发送到我的父组件,以便在用户键入时过滤一些输出。控制台输出是在我键入时会更新的对象,但它是从子组件中触发的。但是,具有子变量的父组件方法没有触发,这是我需要实现管道来过滤 cmets 的地方。

子组件

 @Output() filterEmiter = new EventEmitter<FilterModel>();

    constructor(service: CommentsFilterService) { }

    passFilterToCommentsComponent() {
        console.log(this);
        this.filterEmiter.emit(this.filter)
    }

子组件html

<input name="Customer ID" [ngModel]="filter.customerId" (ngModelChange)="filter.customerId = $event"  (ngModelChange)="passFilterToCommentsComponent()">

父组件

  @Input() filter: FilterModel;

    constructor(service: CommentsService) {
        this.tabs = service.getLongtabs();
    }

    filterReviews() {
        console.log("HIT HIT HIT")
    }

父组件html文件

<proto-approval (filterEmiter)="filterReviews()"></proto-approval>

所需的输出将是"HIT HIT HIT",因为我键入显示该方法实际上正在被触发。第二个是传递和更新filter 对象,以便实现管道。

【问题讨论】:

标签: angular


【解决方案1】:

这里不需要@ViewChild。只需在模板中订阅filterEmiter,如下所示:

<proto-approval (filterEmiter)="filterReviews($event)">
filterReviews($event){
    this.filter = $event
}

【讨论】:

  • 我说得对吗,现在的问题不在于组件之间的通信,而在于子从其模板获取事件?
  • 尝试在 ngModel [(ngModel)]="filter?.erpNumber" 的框语法中使用香蕉。它将 erpNumber 的值“绑定”到输入值而不是 [] = 单向绑定
  • (ngModelChange)="filter.erpNumber = $event;passFilterToCommentsComponent()" 在对事件做出反应之前更新值。将 [ngModel] 保留在单括号中
  • 我更新了我的问题并找到了上一期的解决方案。喜欢的话可以看一下,
猜你喜欢
  • 2019-11-11
  • 2018-07-07
  • 2019-10-24
  • 2021-02-15
  • 2020-11-13
  • 2018-08-12
  • 2017-09-13
  • 2020-09-28
  • 1970-01-01
相关资源
最近更新 更多