【发布时间】:2021-11-27 15:46:28
【问题描述】:
我有一个问题。
为什么我第二次点击父组件没有触发事件?
例如,我有第一个父组件
<app-page>
<div *ngFor="let object of objects$ | ngrxPush">
<app-parent>
<div class="add-button">
<button
(click)="onAddBtnClick(object)"
mat-icon-button
>
</button>
</div>
</app-parent>
<app-child-container
[viewChildContainer]="object.showChildContiner"
(containerClickOutside)="onContainerClick(object)"
>
</app-child-container>
</div>
</app-page>
在 .ts 文件中用于父项
onAddBtnClick(object: Object): void {
object.showChildContiner = true;
}
onContainerClick(object): void {
object.showChildContiner = false;
}
在子容器中
<div class="child-container">
<app-grandson-component
*ngIf="viewChildContainer"
(containerClickOutside)="containerClickOutside($event)"
>
</app-grandson-component>
</div>
在child.ts中
@Input() viewChildContainer: boolean;
onGrandSonEmit(grandChildTextAreaText: string): void {
this.containerClickOutside.emit(grandChildTextAreaText);
}
在孙子里
<div (focusout)="onFocusOut()">
<textarea
matInput
cdkTextareaAutosize
#autosize="cdkTextareaAutosize"
#textarea
[(ngModel)]="textareaText"
></textarea>
</div>
在grandson.ts中
@ViewChild('textarea', { static: false }) textarea: ElementRef;
@Output() onGrandSonEmit: EventEmitter<any> = new EventEmitter();
noteText: string;
onFocusOut(): void {
this.onGrandSonEmit.emit(this.textarea.nativeElement.value);
}
}
场景
我第一次点击父组件的onAddBtnClick,子组件和孙子组件进入视图。
我第二次点击 onAddBtnClick 时,它会从孙子组件调用 focusOut,直到父组件发出一切,但不会触发 onAddBtnClick 的事件。
任何想法, 非常感谢。
【问题讨论】:
标签: angular components click eventemitter