我有一个用例,其中父组件有两个子组件。选择子组件时,应重置父FormControl。
为了做到这一点,我需要从子节点向父节点发送一个布尔值,但这不能按预期运行。
这是我目前的实施 - 这是行不通的!有人可以解释我在忽视什么吗?非常感谢
子组件
在子项中注册事件发射器
@Output() formControlReset: EventEmitter<boolean> = new EventEmitter();
发出事件
this.formControlReset.emit(true);
父组件
<div>
<input (formControlReset)="formControlReset($event)" [(ngModel)]="userInput" [formControl]="inputFormControl" *ngIf="showSearchInput" placeholder="Search here" #searchInput></input>
</div>
在formControl上调用重置
formControlReset(value: boolean): void {
console.log('doing something');
this.inputFormControl.reset();
}
答案 0 :(得分:0)
我发布的内容没有错。
@Input和@Output仅在您具有父子组件关系时才起作用,它不适用于不相关的组件。
我的猜测是子组件不是父组件结构的一部分。
答案 1 :(得分:0)
您似乎没有使用子组件选择器定义子组件。
改变这个:
model = VGG16(include_top=False)
tst_b_s = 200
test_batches = ImageDataGenerator().flow_from_directory(
directory='test/',
target_size=(245,245),
batch_size=tst_b_s,
shuffle=False,
)
test_feats = model.predict_generator(test_batches, steps=test_batches.samples/tst_b_s, verbose=1)
对此:
<input (formControlReset)="formControlReset($event)" [(ngModel)]="userInput" [formControl]="inputFormControl" *ngIf="showSearchInput" placeholder="Search here" #searchInput></input>
答案 2 :(得分:0)
人们已经覆盖了发射器,如果你有一个实际的父子组件关系,它应该可以正常工作。如果这些是兄弟组件,那么您需要通过服务传递数据。