Как Object.defineProperty на объекте пользовательского окна в Angular? - PullRequest
2 голосов
/ 05 июня 2019

Например, у меня есть объект YOTI, введенный в браузер:

Когда я запускаю это в консоли:

window.YOTI

Я получаю:

{onShare: ƒ, redirect: ƒ}

Затем, если я получаю доступ к методу перенаправления, я получаю это:

window.YOTI.redirect
ƒ (callbackUrl, token) {
                var currentQuery =  window.location.search.replace('?','')
                var currentFragment = window.location.hash
                var separator = (callbackU…

Я хочу изменить это свойство в angular onInit (), и я попробовал это здесь (https://yoti.zendesk.com/hc/en-us/articles/360008958873-Does-the-Yoti-frontend-client-support-an-Angular-App-):

const ytcontainer = {
};

Object.defineProperty(window, 'YOTI', {
  get: () => ytcontainer.YOTI,

  set: yoti => {
    ytcontainer.YOTI = yoti;

    Object.defineProperty(yoti, 'redirect', {
      get: () => {
        return (callbackUrl, token) => {
          console.log(callbackUrl);
          console.log(token);
        };
      },
    });
  },
});

но после этого, когда я запускаю window.YOTI, я получаю неопределенный объект.

window.YOTI
undefined

Что я здесь не так делаю?

...