В вашем коде that
не является переменной, это свойство экземпляра Whatever
.
Ваш dialog
также является свойством экземпляра Whatever
.В вызовах его методов this
будет различаться в зависимости от того, как они вызываются.
Чтобы обеспечить доступ к экземпляру Whatever
, вы можете использовать функции стрелок и использовать this
в функциях:
export class Whatever implements OnInit {
dialog = {
data: {},
open: () => {
// use `this` here
// use `this.dialog.data` to acccess the data above
},
close: () => {},
toggle: () => {}
};
//other declarations and functions
}
Это работает, потому что поля классов, объявленные так, как вы их объявили, эффективно инициализируются так, как если бы они были внутри вашего конструктора, а внутри конструктора this
ссылается на экземпляр.Функции стрелок закрывают this
контекста, в котором они созданы (точно так же, как закрывают переменную в области видимости).