在A类中,我具有RestorePassword
函数,在其中使用具有可观察类型的服务authenticationService
:
class A {
public constructor(public b: B) {
b.register([this.RestorePassword.bind(this)])
}
public RestorePassword(data: AbstractControl) {
alert("Called");
this.authenticationService.RestorePassword({}).subscribe(result => {
console.log(result);
}, error => console.log('Could not load artists: ' + error));
}
}
在构造函数中,将在类B中注册方法RestorePassword
。
class B {
private functionsList: Function[];
public register(functionsList: Function[]) {
this.functionsList = functionsList;
}
public iterate(_form: IForm) {
for (let i = 0; i < this.functionsList.length; i++) {
if (typeof this.functionsList[i] === 'function') {
this.functionsList[i](_form.form.controls);
}
}
}
}
因此,在C类中,我从类iterate()
中调用方法:B
:
class C {
public construct(b: B, form: Form){
b.iterate(form);
}
}
方法public iterate();
工作时,它将调用类A中的函数:
this.functionsList[i](_form.form.controls);
它有效,并且我收到消息:alert("Called");
。但是订阅后出现一个奇怪的错误,它涉及异常:
error => console.log('Could not load artists: ' + error));
无法加载美工:将圆形结构转换为JSON
我不知道,为什么会这样...
authenticationService 中的方法RestorePassword
是:
public RestorePassword(data: any): Observable<any> {
const data = {
'$type': 'ReadRequest',
'query': 'restorePassword',
'parameters': {'mobilePhone': ''}
};
return this.http.post(null, data)
.map(res => (<any>res)._body === '' ? {} : res.json().result)
.catch(this.handleError);
}