Dev*_*per 8 typescript angular-components angular
子组件TS
import { Component, OnInit, Input, Output } from '@angular/core';
import { EventEmitter } from 'events';
export class ChildComponent implements OnInit {
@Output() OpenScheduleCall = new EventEmitter<boolean>();
onLog() {
this.OpenScheduleCall.emit(false);
}
}
Run Code Online (Sandbox Code Playgroud)
父组件HTML:
<div [(hidden)]="OpenScheduleCall">
// content
</div>
<app-schedule-call *ngIf="!!OpenScheduleCall" [prospectid]='prospectid' [(OpenScheduleCall)]="OpenScheduleCall"></app-schedule-call>
Run Code Online (Sandbox Code Playgroud)
我正在设置子组件中的值,但更改不会反映在父组件中
您尚未将其标记OpenScheduleCall
为子组件的输入,因此首先您需要这样做.要在框中实现与banana相关的双向绑定,您@Output
需要@Input
使用后缀作为变量名称Change
.首先将变量标记OpenScheduleCall
为@Input
child,然后更改@Output
变量的名称:
export class ChildComponent implements OnInit {
@Input() OpenScheduleCall;
@Output() OpenScheduleCallChange = new EventEmitter<boolean>();
onLog() {
this.OpenScheduleCallChange.emit(false);
}
}
Run Code Online (Sandbox Code Playgroud)
现在你有双向绑定:
[(OpenScheduleCall)]="OpenScheduleCall"
Run Code Online (Sandbox Code Playgroud)
EventEmitter 导入不正确。它应该从“@angular/core”而不是“events”导入。在父组件中使用 [(hidden)] 和 *ngIf 似乎是多余的。根据您的要求选择一种方法。
这是更正后的代码:
子组件 TS:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
export class ChildComponent implements OnInit {
@Output() OpenScheduleCall = new EventEmitter<boolean>();
onLog() {
this.OpenScheduleCall.emit(false);
}
}
Run Code Online (Sandbox Code Playgroud)
父组件 HTML:
<div [hidden]="!OpenScheduleCall">
<!-- content -->
</div>
<app-schedule-call *ngIf="OpenScheduleCall" [prospectid]="prospectid" (OpenScheduleCall)="onScheduleCall($event)"></app-schedule-call>
Run Code Online (Sandbox Code Playgroud)
父组件 TS:
export class ParentComponent implements OnInit {
// Assuming you have prospectid defined
prospectid: any;
// Boolean property to control visibility
OpenScheduleCall: boolean = false;
// Handle the event emitted by the child component
onScheduleCall(value: boolean) {
this.OpenScheduleCall = value;
}
}
Run Code Online (Sandbox Code Playgroud)
通过这些更改,您的子组件应该能够发出事件,并且父组件应该能够对其做出反应并相应地更新 OpenScheduleCall 属性。
归档时间: |
|
查看次数: |
9384 次 |
最近记录: |