Способ closeFunction
был определен как недопустимая функция. Чтобы ваш пример работал, функция close должна принять диалог в качестве параметра или отреагировать, если он не определен. Попробуйте это:
const closeFunction = (dialog?) => {
if ( dialog ) {
// Valid dialog
dialog.close
} else {
// Undefined dialog
console.log( 'Dialog does not exist' );
}
};
const closeHandler = (dialog?) => {
closeFunction(dialog)
};
dialogRef.close = (dialog?) => {
closeHandler(dialog);
}
EDIT
Приведенный выше код избавляет от сообщения об ошибке из консоли, но фактически не перезаписывает функцию закрытия. Я не думаю, что возможно перезаписать функцию напрямую, но обходной путь должен определить новый метод, то есть customClose
, который применяет пользовательский код и затем закрывает диалоговое окно. Вот как это работает:
// Declare a new method (customClose) on the dialogRef after dialog opens
// This new method stores the logic you want to apply before closing
dialogRef['customClose'] = () => {
console.log( 'Apply 2 seconds animation here' );
setTimeout(() => dialogRef.close() , 2000);
}
// Then, on the onNoClick method call the custom method instead
onNoClick(): void {
this.dialogRef['customClose']();
}
Фактическая часть анимации не была рассмотрена. Вы можете увидеть это в действии, проверив консоль на этой демонстрации стекаблиц