Hi,
I'm having issue while trying to use function of the parent controller of my modal.
From the parent controller I open a modal, in the modal I do actions and when I click on a button I want to use the function parentOnChange of the parent controller.
To do this I pass the parentOnChange function of the parent controller through the resolve function of IModalService.
In parentOnChange I use other functions of the parent controller, the problem is : keyword "this" in parentOnChange is not referring the parent controller but to the modal controller, and I can't figure out how to solve this :)
Any help would be appreciated ;)
Here is a simplified example :
The parent controller
export class Controller implements IComponentController {
public static $inject: string[] = [
'$uibModal'
];
constructor(
private readonly $uibModal: IModalService
) { }
private openContextMenu(object: MyInterface) {
const modal = this.$uibModal.open({
component: 'myContextMenuModal',
resolve: {
object: () => object,
onChange: () => this.parentOnChange
}
});
}
public parentOnChange(object: MyInterface) {
console.log(this);
this.oneFunction();
this.twoFunction(object);
}
}
The modalexport class Controller {
// Bindings
public readonly close: (data: any) => void;
public readonly dismiss: () => void;
public readonly resolve: {
object: MyInterface,
onChange(object: MyInterface) : void
};
public object: MyInterface;
public onChange: (object: MyInterface) => void;
public button_Click(): void {
...
this.Change(this.object);
...
}
}
export default {
template: htmlTemplate,
controller: Controller,
bindings: {
resolve: '<',
close: '&',
dismiss: '&'
}
};