首页 文章

Angular 2 - 将数据从Child发送到Parent组件

提问于
浏览
0

我有一个用例,其中父组件有两个子组件 . 选择子组件时,应重置父FormControl .

为了做到这一点,我需要从子节点向父节点发送一个布尔值,但这不能按预期运行 .

这是我目前的实施 - 这是行不通的!有人可以解释我在忽视什么吗?非常感谢

Child component

在子项中注册事件 Launcher

@Output() formControlReset: EventEmitter<boolean> = new EventEmitter();

发出事件

this.formControlReset.emit(true);

Parent Component

<div>
     <input (formControlReset)="formControlReset($event)" [(ngModel)]="userInput" [formControl]="inputFormControl" *ngIf="showSearchInput" placeholder="Search here" #searchInput></input>
</div>

在formControl上调用reset

formControlReset(value: boolean): void {
    console.log('doing something');
    this.inputFormControl.reset();
}

3 回答

  • 0

    我发布的内容没有错 .

    @Input和@Output仅在您具有父子组件关系时才起作用,它不适用于不相关的组件 .

    我的猜测是子组件不是父组件结构的一部分 .

  • 0

    您似乎没有使用子组件的选择器定义子组件 .

    改变这个:

    <input (formControlReset)="formControlReset($event)" [(ngModel)]="userInput" [formControl]="inputFormControl" *ngIf="showSearchInput" placeholder="Search here" #searchInput></input>
    

    对此:

    <app-childSelector (formControlReset)="formControlReset($event)" [(ngModel)]="userInput" [formControl]="inputFormControl" *ngIf="showSearchInput" placeholder="Search here" #searchInput></app-childSelector>
    
  • 0

    人们已经覆盖了 Launcher ,如果你有一个实际的父子组件关系,它应该可以正常工作 . 如果这些是兄弟组件,则需要通过服务传递数据 .

相关问题