https://github.com/angular/angular/issues/7303#issuecomment-189697783

On Sunday, February 28, 2016 at 5:38:09 AM UTC+1, Günter Zöchbauer wrote:
>
> If this approach works at all you can use a component for head that you 
> add to the template of each root component (html) and reuse the header 
> information.
>
> > but I again doubt that this is a recommended way to do what I need.
>
> I doubt there is a recommended way for that currently in Angular2. 
>
> Recently a few issues were created in the Angular GitHub repo about 
> extending the `Title` service to allow to access other parts of the head 
> tag in a webworker/server rendering safe way.
>
> I guess it's better to stick to your current imperative approach until 
> Angular provides something out of the box.
>
> On Friday, February 26, 2016 at 4:43:05 PM UTC+1, Radek Holý wrote:
>>
>> Well, let's say that I have a component that is attached to the root 
>> element (<html>) and a child component for each layout. By definition, the 
>> root *component* would replace all the child elements of the root element 
>> (<head> and <body> in <html>) with the DOM created from the template of the 
>> component. I guess that this by itself may lead to some unexpected side 
>> effects. That's why I said that to mitigate it I would probably have to 
>> "copy the whole <head> into each template of every such component". 
>> Assuming the hierarchy, I'd have to copy it just to the template of the 
>> *root* element but still, I would have to maintain two copies of the 
>> document header (in the template and in index.html [1]). I really doubt 
>> that this is a recommended way to do what I need.
>>
>> Yes, I currently use the "imperative" way (add classes OnInit and remove 
>> the classes OnDestroy) but I again doubt that this is a recommended way to 
>> do what I need.
>>
>> Or did I missed something?
>> -- 
>> Radek
>>
>>  
>>
>> On 2016-02-26 13:32, Günter Zöchbauer wrote:
>>
>> I don't know if that works with `<html>`. I have tried it successfully 
>> with `<body>`. 
>> Therefore I guess it would work for `<html>` as well.
>>  
>> Not sure what you mean by: 
>>  
>>     and copy the whole <head> into each template of every such component? 
>>  
>> One root component should be enough. The layouts can be components in the 
>> root component.
>> Adding the root component to `<head>` would probably wipe all it's static 
>> content when the root component is bootstrapped.
>>  
>> Another way is to add the root component to `<body>` or as a child of 
>> body and read/write the classes of `<html>` imperatively (instead of 
>> declarative binding syntax)
>>
>> On Thursday, February 25, 2016 at 11:24:37 AM UTC+1, Radek Holý wrote: 
>>>
>>> Hello, 
>>>
>>> I'm using a CSS framework which requires different classes of the <html> 
>>> element for different layouts. I'd like to have a component for each 
>>> layout. 
>>>
>>> How can I bind to the <html>'s attributes/classes from these components? 
>>>
>>> Do I have to use the "html" selector and copy the whole <head> into each 
>>> template of every such component? Well, I can create a component which 
>>> holds the header but still it would have to be maintained in at least 
>>> two different files (the index.html and the template). 
>>>
>>> Or should I create a directive with the selector "html" and access this 
>>> directive from these components? 
>>>
>>> What is the recommended approach? 
>>>
>>> Thanks in advance 
>>> -- 
>>> Radek 
>>
>>  
>>
>>  
>>
>

-- 
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