我有一个用例,其中父组件有两个子组件 . 选择子组件时,应重置父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 回答
我发布的内容没有错 .
@Input和@Output仅在您具有父子组件关系时才起作用,它不适用于不相关的组件 .
我的猜测是子组件不是父组件结构的一部分 .
您似乎没有使用子组件的选择器定义子组件 .
改变这个:
对此:
人们已经覆盖了 Launcher ,如果你有一个实际的父子组件关系,它应该可以正常工作 . 如果这些是兄弟组件,则需要通过服务传递数据 .