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

时间:2018-01-28 18:20:15

标签: angular output

我有一个用例,其中父组件有两个子组件。选择子组件时,应重置父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();
}

3 个答案:

答案 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)

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