Gunter-
That worked!  Putting this in the component did the trick...
    encapsulation: ViewEncapsulation.None,
With that added, stylesheets do not get the injected attribute.  Now I just 
need to be sure to design the styles so that they don't interfere with 
other components.  Thank you!


On Thursday, February 18, 2016 at 10:31:39 AM UTC-5, Günter Zöchbauer wrote:
>
> By default Angular doesn't use shadow DOM (only when you set 
> `encapsulation: ViewEncapsulation.Native` and the browser supports shadow 
> DOM.
>
> I think there was an issue reported recently covering that problem.
>
> You can try if setting `ViewEncapsulation.None` gets rid of the 
> `_ng_content...` classes.
>
> On Tuesday, February 16, 2016 at 6:49:29 PM UTC+1, KN wrote:
>>
>> Through some painful troubleshooting, I found that when you add css to a 
>> component, Angular 2 puts the css in the page head, but adds a more 
>> specific css selector to all css tags.  For example, if your component css 
>> has  ".redhot { color: red };" Angular 2 will add that css to head as 
>> ".redhot[_ngcontent-clq-2] { color: red };" (note that the 'clq' part seems 
>> to be randomly generated).  And then Angular 2 adds an attribute to (maybe) 
>> all DOM elements of the component to match.  In other words, your <input 
>> id="myinput" class="redhot"> becomes <input id="myinput" class="redhot" 
>> _ngcontent-clq-2>.  The bracket syntax in the stylesheet will only select 
>> elements with class of "redhot" *that also have the attribute 
>> _ngcontent-clq-2*.  That is all fine and well... until the component 
>> itself adds DOM elements apart from Angular.  Those elements won't have the 
>> added attribute, and therefor won't match to any of the styles.  For this 
>> reason, I've had to migrate some styles outside the component stylesheet 
>> and into index.html (or whatever hosts your components).
>>
>> I don't know exactly when the 'new DOM elements which are missing 
>> Angular's injected attribute' problem occurs.  It occurred for me when 
>> using Twitter Typeahead's control inside an Angular 2 component.  I don't 
>> know if it happens when jQuery comes in the picture, or when elements are 
>> added to the shadow DOM (I am not very familiar with shadow DOM).  But I do 
>> know it is a bit of a problem.  Can anyone shed some insight into the 
>> attribute injection and how to elegantly address the problem?
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to