Typescript/Angular — вызов отдельной функции после возврата модального результата

У меня проблема с вызовом отдельной функции, когда мое обещание возвращается путем закрытия или отмены модального окна в Angular/Typescript. Возможно, я пытаюсь сделать что-то невозможное, но все примеры, которые я видел, либо записывают возвращенные данные обратно в консоль или в переменную, либо выдают предупреждение. Вот так:

modalInstance.result.then(function (result) {
    console.log(result);
});

Что я хочу сделать, так это вызвать отдельную функцию после возврата этого результата, например:

modalInstance.result.then(function (result) {
    console.log(result);
    this.EditWidget(result);
});

Но это не работает, и я не могу понять, почему. Я пробовал обо всем, и я думаю, что мне просто чего-то не хватает в том, как здесь работает обещание.

Любые идеи?


person gibbypoo    schedule 04.11.2016    source источник
comment
Я не вижу ничего плохого в коде, который вы разместили. С чего вы взяли, что ошибка есть? Эта функция работает за пределами обещания? Можете ли вы предоставить больше кода, чтобы показать, что вы делаете?   -  person Matthew Green    schedule 04.11.2016


Ответы (1)


Я предполагаю, что this не то, что вы ожидаете. Вам нужно зафиксировать это значение и использовать захваченное значение в обратном вызове:

var that = this;
modalInstance.result.then(function (result) {
    console.log(result);
    that.EditWidget(result);
});

или привязать функцию к этому:

var callback = function (result) {
    console.log(result);
    this.EditWidget(result);
};

modalInstance.result.then(callback.bind(this));
person JB Nizet    schedule 04.11.2016
comment
Великолепно! Спасибо большое! - person gibbypoo; 04.11.2016