有没有一种方法可以在 emit 事件上触发一个函数而不仅仅是 onChange?
Is there a method to trigger a function on emit event and not only onChange?
当我按下 parent 元素中的箭头时,我总是发出 true。 child 仅在发射器从未定义变为真时才在开始时接收更改。是否有一种方法可以在 parent 发出某些东西时始终调用该函数,即使它的值与纬度时间相同?
Parent HTML:
<div (click)="emit()">
<child [changed_slide]= "changed_slide"></child>
Parent.ts:
emit(){this.changed_slide.emit(true);}
Child:
ngOnChanges(changes: { [property: string]: SimpleChange }){
let change: SimpleChange = changes['changed_slide'];
console.log(change);
}
所以我希望每次单击 parent div "true" 时都会发出(或其他所有内容,我只想发出一些东西以便在child) 然后在child 中会自动触发一个函数。每次我单击 parent 时,child 都会执行某些操作。
如果有任何想法,我将不胜感激,谢谢!
就像您将数据从父元素发送到子元素一样,您可以在子元素中使用一组@Input:
**Child**
private _changed_slide: boolean;
@Input() public set changed_slide(value: boolean) {
this._changed_slide = value;
}
那么在你的父级中,你可以这样做:
export class ParentComponent {
private eventSource: Subject<boolean>;
public event$: Observable<boolean>;
constructor() {
this.eventSource = new Subject();
this.event$ = this.eventSource.asObservable();
}
emit() {
this.eventSource.next(true);
}
}
Html:
<div (click)="emit()">
<child [changed_slide]= "event$ | async"></child>
当我按下 parent 元素中的箭头时,我总是发出 true。 child 仅在发射器从未定义变为真时才在开始时接收更改。是否有一种方法可以在 parent 发出某些东西时始终调用该函数,即使它的值与纬度时间相同?
Parent HTML:
<div (click)="emit()">
<child [changed_slide]= "changed_slide"></child>
Parent.ts:
emit(){this.changed_slide.emit(true);}
Child:
ngOnChanges(changes: { [property: string]: SimpleChange }){
let change: SimpleChange = changes['changed_slide'];
console.log(change);
}
所以我希望每次单击 parent div "true" 时都会发出(或其他所有内容,我只想发出一些东西以便在child) 然后在child 中会自动触发一个函数。每次我单击 parent 时,child 都会执行某些操作。 如果有任何想法,我将不胜感激,谢谢!
就像您将数据从父元素发送到子元素一样,您可以在子元素中使用一组@Input:
**Child**
private _changed_slide: boolean;
@Input() public set changed_slide(value: boolean) {
this._changed_slide = value;
}
那么在你的父级中,你可以这样做:
export class ParentComponent {
private eventSource: Subject<boolean>;
public event$: Observable<boolean>;
constructor() {
this.eventSource = new Subject();
this.event$ = this.eventSource.asObservable();
}
emit() {
this.eventSource.next(true);
}
}
Html:
<div (click)="emit()">
<child [changed_slide]= "event$ | async"></child>