我从孩子那里打了一个方法。
在子组件中:
@Output() parentEvent = new EventEmitter<any>();
click1() {
//calling the method from child
this.parentEvent.emit(myObj1);
}
在父组件中:
postMethod1(event) {
//calling one post method(observable)
}
我需要从子组件调用此postMethod1()
方法。但问题是,如果在父级中抛出任何异常,我如何在子组件中处理它?无法得到父母对孩子的回应。我怎么处理这个?
答案 0 :(得分:0)
要收听eventEmitted,您所要做的就是:
<child-component (parentEvent)='postMethod1($event)'></child-component>
现在每次子组件发出事件时,都会调用postMethod1()
,并且发送的数据将作为参数传递给方法。
修改强>
由于您要处理异常,因此可以使用共享服务来通知子组件。
假设您有shared.service.ts
在shared.service.ts
中,您可以执行以下操作:
exception : Subject<String> = new Subject<String>();
现在您可以创建一个方法来从父级发送异常:
exceptionRaised(parentException : any){
this.exception.next(parentException);
}
使用此方法,可以在子组件中订阅异常,如下所示:
child.component.ts
中的
_sharedService.exception.subscribe((exception : any) =>{
//do whatever you want with the exception
});
要在父级中设置例外,
在parent.component.ts
只需致电_sharedService.exceptionRaised(yourException);
现在,您的父母可以与孩子沟通,并在您遇到例外时通知
答案 1 :(得分:0)
说您孩子的标签为app-child
。然后正确的语法是:
<app-child (parentEvent)="postMethod1($event)"></app-child>
编辑对于您的第二个问题,请在父组件中使用ViewChild
:
export class ParentComponent {
@ViewChild(ChildComponent) child: ChildComponent;
// Rest of your code
postMethod1(event: any) {
this.myService.makeHttpPost().subscribe(response => null, error => {
this.child.handleError(error);
});
}
}
这会调用子组件中的handleError
。