Использование javascript в компоненте angular typescript

Я пытаюсь использовать переменную region внутри обратного вызова, но я никак не могу получить ее значение.

Как вы, возможно, уже знаете, я создаю экземпляр объекта JS с помощью TS, и обратный вызов является частью определения этого объекта JS.

Я уже могу использовать JS в своих компонентах Angular, используя () => { в тех методах, где мне нужно использовать любую ссылку на this внутри обратных вызовов JS, но в этом конкретном случае это вообще не работает.

showRegion = (region: string) => {
        var service = new JS.service();
        var prov = new JS.provider(service, {
            callback: (data) => {
                // cannot read region variable
            }
    })

Спасибо,

JS какой класс здесь представляют?

Radonirina Maminiaina 11.04.2018 13:37

Это объект JS из внешней библиотеки JS. const JS = окно ['JS'];

Aisatora 11.04.2018 13:38

И в этом JS есть метод service ()? Можете ли вы опубликовать код своей JS const?

Radonirina Maminiaina 11.04.2018 13:39

Ваш заголовок не совсем уместен, это скорее проблема с областью видимости (ожидал ответов "typescript IS javascript" от людей, не читающих вопрос, но все равно ни одного). У вас такая же проблема с классическим синтаксисом функции для callback или закрытием? Кстати, а вы получаете ожидаемый результат при отображении region внутри showRegion?

Kaddath 11.04.2018 13:44

Ну, это сторонняя библиотека "карты", я изменил имена переменных для простоты. Да. сервис и провайдер существуют, и они работают, когда я не использую этот регион var. Единственное, что я не могу сделать, это получить / использовать переменную региона в обратном вызове, определенном в json в качестве параметра конструктора для поставщика.

Aisatora 11.04.2018 13:46

@Kaddath Да, я могу использовать регион внутри showRegion, но не внутри обратного вызова.

Aisatora 11.04.2018 13:48

@AitorMolina, вам нужно прочитать о TypeScript. Вы можете начать с typescriptlang.org. Вы должны знать, что нет такой вещи, например, как TypeScript <=> JavaScript interop, потому что TypeScript является JavaScript.

Aluan Haddad 11.04.2018 13:51

В вопросе отсутствует stackoverflow.com/help/mcve. Пожалуйста, предоставьте способ воспроизвести эту ошибку. region существует и не может переключать ошибку, такую ​​как cannot read region variable, если callback вызывался регулярно, а не с eval.

Estus Flask 11.04.2018 14:15

Проблема может быть в JS.provider, а не в показанном коде. Если я использую классический синтаксис функций для имитации объекта JS с вещами, которые вы используете внутри, у меня нет проблем с получением region. См. Пример здесь

Kaddath 11.04.2018 14:21
0
9
85
0

Другие вопросы по теме