Angular: Event listener to dynamic element from external lib












1















I have implemented some input typeahead autocomplete from bootstrap in my input element it also have a switchable lang (right to left and left to right).



The default of the dropdown menu is text-align: left and its created dynamically when typing. I'm trying to attach an eventListener to it when it's on the RTL input it will override its css to text-align: right and back to left if it's on LTR.



I tried this for each ltr/rtl:



let dd_element = document.getElementsByClassName('dropdown-menu')[0]
dd_element.classList.add('dropdown-toLeft')


But I get undefined error since the element is not exist yet



So.. How can I control the dynamic element and it's behavior?










share|improve this question























  • When switching to the rtl language, does the dir attribute get set anywhere in the html? Potentially you could solve it with just css: [dir="rtl"] .dropdown-menu { text-align: right!important; }

    – Alex K
    Nov 20 '18 at 20:38











  • the element is not created yet so if I try to change something I got undefined

    – Roi Sadika
    Nov 26 '18 at 13:30











  • If you target the dropdown element with CSS, it won't matter whether the element exists or not. The CSS rule will be applied whenever the element is created. Can you post the HTML markup for the dropdown element for ltr and rtl?

    – Alex K
    Nov 26 '18 at 15:12











  • I tried it out, but it wont affect when I'm switching the components

    – Roi Sadika
    Dec 2 '18 at 15:16
















1















I have implemented some input typeahead autocomplete from bootstrap in my input element it also have a switchable lang (right to left and left to right).



The default of the dropdown menu is text-align: left and its created dynamically when typing. I'm trying to attach an eventListener to it when it's on the RTL input it will override its css to text-align: right and back to left if it's on LTR.



I tried this for each ltr/rtl:



let dd_element = document.getElementsByClassName('dropdown-menu')[0]
dd_element.classList.add('dropdown-toLeft')


But I get undefined error since the element is not exist yet



So.. How can I control the dynamic element and it's behavior?










share|improve this question























  • When switching to the rtl language, does the dir attribute get set anywhere in the html? Potentially you could solve it with just css: [dir="rtl"] .dropdown-menu { text-align: right!important; }

    – Alex K
    Nov 20 '18 at 20:38











  • the element is not created yet so if I try to change something I got undefined

    – Roi Sadika
    Nov 26 '18 at 13:30











  • If you target the dropdown element with CSS, it won't matter whether the element exists or not. The CSS rule will be applied whenever the element is created. Can you post the HTML markup for the dropdown element for ltr and rtl?

    – Alex K
    Nov 26 '18 at 15:12











  • I tried it out, but it wont affect when I'm switching the components

    – Roi Sadika
    Dec 2 '18 at 15:16














1












1








1








I have implemented some input typeahead autocomplete from bootstrap in my input element it also have a switchable lang (right to left and left to right).



The default of the dropdown menu is text-align: left and its created dynamically when typing. I'm trying to attach an eventListener to it when it's on the RTL input it will override its css to text-align: right and back to left if it's on LTR.



I tried this for each ltr/rtl:



let dd_element = document.getElementsByClassName('dropdown-menu')[0]
dd_element.classList.add('dropdown-toLeft')


But I get undefined error since the element is not exist yet



So.. How can I control the dynamic element and it's behavior?










share|improve this question














I have implemented some input typeahead autocomplete from bootstrap in my input element it also have a switchable lang (right to left and left to right).



The default of the dropdown menu is text-align: left and its created dynamically when typing. I'm trying to attach an eventListener to it when it's on the RTL input it will override its css to text-align: right and back to left if it's on LTR.



I tried this for each ltr/rtl:



let dd_element = document.getElementsByClassName('dropdown-menu')[0]
dd_element.classList.add('dropdown-toLeft')


But I get undefined error since the element is not exist yet



So.. How can I control the dynamic element and it's behavior?







javascript css angular






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 20 '18 at 17:09









Roi SadikaRoi Sadika

9710




9710













  • When switching to the rtl language, does the dir attribute get set anywhere in the html? Potentially you could solve it with just css: [dir="rtl"] .dropdown-menu { text-align: right!important; }

    – Alex K
    Nov 20 '18 at 20:38











  • the element is not created yet so if I try to change something I got undefined

    – Roi Sadika
    Nov 26 '18 at 13:30











  • If you target the dropdown element with CSS, it won't matter whether the element exists or not. The CSS rule will be applied whenever the element is created. Can you post the HTML markup for the dropdown element for ltr and rtl?

    – Alex K
    Nov 26 '18 at 15:12











  • I tried it out, but it wont affect when I'm switching the components

    – Roi Sadika
    Dec 2 '18 at 15:16



















  • When switching to the rtl language, does the dir attribute get set anywhere in the html? Potentially you could solve it with just css: [dir="rtl"] .dropdown-menu { text-align: right!important; }

    – Alex K
    Nov 20 '18 at 20:38











  • the element is not created yet so if I try to change something I got undefined

    – Roi Sadika
    Nov 26 '18 at 13:30











  • If you target the dropdown element with CSS, it won't matter whether the element exists or not. The CSS rule will be applied whenever the element is created. Can you post the HTML markup for the dropdown element for ltr and rtl?

    – Alex K
    Nov 26 '18 at 15:12











  • I tried it out, but it wont affect when I'm switching the components

    – Roi Sadika
    Dec 2 '18 at 15:16

















When switching to the rtl language, does the dir attribute get set anywhere in the html? Potentially you could solve it with just css: [dir="rtl"] .dropdown-menu { text-align: right!important; }

– Alex K
Nov 20 '18 at 20:38





When switching to the rtl language, does the dir attribute get set anywhere in the html? Potentially you could solve it with just css: [dir="rtl"] .dropdown-menu { text-align: right!important; }

– Alex K
Nov 20 '18 at 20:38













the element is not created yet so if I try to change something I got undefined

– Roi Sadika
Nov 26 '18 at 13:30





the element is not created yet so if I try to change something I got undefined

– Roi Sadika
Nov 26 '18 at 13:30













If you target the dropdown element with CSS, it won't matter whether the element exists or not. The CSS rule will be applied whenever the element is created. Can you post the HTML markup for the dropdown element for ltr and rtl?

– Alex K
Nov 26 '18 at 15:12





If you target the dropdown element with CSS, it won't matter whether the element exists or not. The CSS rule will be applied whenever the element is created. Can you post the HTML markup for the dropdown element for ltr and rtl?

– Alex K
Nov 26 '18 at 15:12













I tried it out, but it wont affect when I'm switching the components

– Roi Sadika
Dec 2 '18 at 15:16





I tried it out, but it wont affect when I'm switching the components

– Roi Sadika
Dec 2 '18 at 15:16












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398075%2fangular-event-listener-to-dynamic-element-from-external-lib%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398075%2fangular-event-listener-to-dynamic-element-from-external-lib%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

Npm cannot find a required file even through it is in the searched directory