View Encapsulation issue angular5
I want to apply CSS to my child components that are called from a parent component using the trick it works fine
Encapsulation: ViewEncapsulation.None
But when i Navigate to other routes or pages it picks the style of the component whose Encapsulation is none weird behaiour
i.e when I hit route
http://localhost:4200/example
and Example component has
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css'],
encapsulation: ViewEncapsulation.None
})
on this route there are two other components
example.component.html
<app-example1></app-example1>
<app-example2></app-example2>
css is apllied to the respective childerns
but when i hit example2 it also picks the css of example1
@Component({
selector: 'app-example2',
templateUrl: './example2.component.html',
styleUrls: ['./example2.component.css'],
})
when i remove the encapsulation property it doesn't pick for example2 route
or when i access directly the route http://localhost:4200/example2
it works fine and css only pick up the example2 css but when i navigate to example1 and naviagtes to example2
it picks the style of example 1 component because of
encapsulation: ViewEncapsulation.None
when i remove this property or directly access the route it works fine, what exactly is the issue I dont know why it is behaving like this
and example1 and example2 are two different modules and have its own routes
angular angular2-routing
add a comment |
I want to apply CSS to my child components that are called from a parent component using the trick it works fine
Encapsulation: ViewEncapsulation.None
But when i Navigate to other routes or pages it picks the style of the component whose Encapsulation is none weird behaiour
i.e when I hit route
http://localhost:4200/example
and Example component has
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css'],
encapsulation: ViewEncapsulation.None
})
on this route there are two other components
example.component.html
<app-example1></app-example1>
<app-example2></app-example2>
css is apllied to the respective childerns
but when i hit example2 it also picks the css of example1
@Component({
selector: 'app-example2',
templateUrl: './example2.component.html',
styleUrls: ['./example2.component.css'],
})
when i remove the encapsulation property it doesn't pick for example2 route
or when i access directly the route http://localhost:4200/example2
it works fine and css only pick up the example2 css but when i navigate to example1 and naviagtes to example2
it picks the style of example 1 component because of
encapsulation: ViewEncapsulation.None
when i remove this property or directly access the route it works fine, what exactly is the issue I dont know why it is behaving like this
and example1 and example2 are two different modules and have its own routes
angular angular2-routing
Can you share your style files as well?
– Bunyamin Coskuner
Nov 23 '18 at 9:10
add a comment |
I want to apply CSS to my child components that are called from a parent component using the trick it works fine
Encapsulation: ViewEncapsulation.None
But when i Navigate to other routes or pages it picks the style of the component whose Encapsulation is none weird behaiour
i.e when I hit route
http://localhost:4200/example
and Example component has
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css'],
encapsulation: ViewEncapsulation.None
})
on this route there are two other components
example.component.html
<app-example1></app-example1>
<app-example2></app-example2>
css is apllied to the respective childerns
but when i hit example2 it also picks the css of example1
@Component({
selector: 'app-example2',
templateUrl: './example2.component.html',
styleUrls: ['./example2.component.css'],
})
when i remove the encapsulation property it doesn't pick for example2 route
or when i access directly the route http://localhost:4200/example2
it works fine and css only pick up the example2 css but when i navigate to example1 and naviagtes to example2
it picks the style of example 1 component because of
encapsulation: ViewEncapsulation.None
when i remove this property or directly access the route it works fine, what exactly is the issue I dont know why it is behaving like this
and example1 and example2 are two different modules and have its own routes
angular angular2-routing
I want to apply CSS to my child components that are called from a parent component using the trick it works fine
Encapsulation: ViewEncapsulation.None
But when i Navigate to other routes or pages it picks the style of the component whose Encapsulation is none weird behaiour
i.e when I hit route
http://localhost:4200/example
and Example component has
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css'],
encapsulation: ViewEncapsulation.None
})
on this route there are two other components
example.component.html
<app-example1></app-example1>
<app-example2></app-example2>
css is apllied to the respective childerns
but when i hit example2 it also picks the css of example1
@Component({
selector: 'app-example2',
templateUrl: './example2.component.html',
styleUrls: ['./example2.component.css'],
})
when i remove the encapsulation property it doesn't pick for example2 route
or when i access directly the route http://localhost:4200/example2
it works fine and css only pick up the example2 css but when i navigate to example1 and naviagtes to example2
it picks the style of example 1 component because of
encapsulation: ViewEncapsulation.None
when i remove this property or directly access the route it works fine, what exactly is the issue I dont know why it is behaving like this
and example1 and example2 are two different modules and have its own routes
angular angular2-routing
angular angular2-routing
asked Nov 23 '18 at 9:08
Kumail HussainKumail Hussain
360625
360625
Can you share your style files as well?
– Bunyamin Coskuner
Nov 23 '18 at 9:10
add a comment |
Can you share your style files as well?
– Bunyamin Coskuner
Nov 23 '18 at 9:10
Can you share your style files as well?
– Bunyamin Coskuner
Nov 23 '18 at 9:10
Can you share your style files as well?
– Bunyamin Coskuner
Nov 23 '18 at 9:10
add a comment |
2 Answers
2
active
oldest
votes
View encapsulation defines whether the template and styles defined within the component can affect the whole application or vice versa.
For ViewEncapsulation None - styles from the component propagate back to the main HTML and therefore are visible to all components on the page. Be careful with apps that have None and Native components in the application. All components with None encapsulation will have their styles duplicated in all components.
If you remove ViewEncapsulation propertythen it will take default one which is Emulated
In this case styles from main HTML propagate to the component. Styles defined in this component's @Component decorator are scoped to this component only.
how can i apply property of parent to specific components only
– Kumail Hussain
Nov 23 '18 at 9:32
Or how can i turn off encapsulation in other components or allow in specific components
– Kumail Hussain
Nov 23 '18 at 9:33
You can not do it for specific component. Either you expose to all component or keep it secret. In your case you need to make unique class at global level.
– Hardik Patel
Nov 23 '18 at 10:35
can you suggest an example for global level class
– Kumail Hussain
Nov 23 '18 at 10:36
put css in style.css file
– Hardik Patel
Nov 23 '18 at 10:36
|
show 4 more comments
simple old css hack
Add a unique class like
.app-component
to the top most element of your component, and make sure all other styles are child of this class.
Better yet if you are using any kind of css preprocessors.
Info:
When using ViewEncapsulation.None, the defined styles are added to the html page using style tag in the head element.
So by ancient conventions, your styles get cascaded.
Hence when you have time invest your time in css styling conventions like BEM or something else.
Ciao!
Where to add the class in css file
– Kumail Hussain
Nov 23 '18 at 10:35
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53443566%2fview-encapsulation-issue-angular5%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
View encapsulation defines whether the template and styles defined within the component can affect the whole application or vice versa.
For ViewEncapsulation None - styles from the component propagate back to the main HTML and therefore are visible to all components on the page. Be careful with apps that have None and Native components in the application. All components with None encapsulation will have their styles duplicated in all components.
If you remove ViewEncapsulation propertythen it will take default one which is Emulated
In this case styles from main HTML propagate to the component. Styles defined in this component's @Component decorator are scoped to this component only.
how can i apply property of parent to specific components only
– Kumail Hussain
Nov 23 '18 at 9:32
Or how can i turn off encapsulation in other components or allow in specific components
– Kumail Hussain
Nov 23 '18 at 9:33
You can not do it for specific component. Either you expose to all component or keep it secret. In your case you need to make unique class at global level.
– Hardik Patel
Nov 23 '18 at 10:35
can you suggest an example for global level class
– Kumail Hussain
Nov 23 '18 at 10:36
put css in style.css file
– Hardik Patel
Nov 23 '18 at 10:36
|
show 4 more comments
View encapsulation defines whether the template and styles defined within the component can affect the whole application or vice versa.
For ViewEncapsulation None - styles from the component propagate back to the main HTML and therefore are visible to all components on the page. Be careful with apps that have None and Native components in the application. All components with None encapsulation will have their styles duplicated in all components.
If you remove ViewEncapsulation propertythen it will take default one which is Emulated
In this case styles from main HTML propagate to the component. Styles defined in this component's @Component decorator are scoped to this component only.
how can i apply property of parent to specific components only
– Kumail Hussain
Nov 23 '18 at 9:32
Or how can i turn off encapsulation in other components or allow in specific components
– Kumail Hussain
Nov 23 '18 at 9:33
You can not do it for specific component. Either you expose to all component or keep it secret. In your case you need to make unique class at global level.
– Hardik Patel
Nov 23 '18 at 10:35
can you suggest an example for global level class
– Kumail Hussain
Nov 23 '18 at 10:36
put css in style.css file
– Hardik Patel
Nov 23 '18 at 10:36
|
show 4 more comments
View encapsulation defines whether the template and styles defined within the component can affect the whole application or vice versa.
For ViewEncapsulation None - styles from the component propagate back to the main HTML and therefore are visible to all components on the page. Be careful with apps that have None and Native components in the application. All components with None encapsulation will have their styles duplicated in all components.
If you remove ViewEncapsulation propertythen it will take default one which is Emulated
In this case styles from main HTML propagate to the component. Styles defined in this component's @Component decorator are scoped to this component only.
View encapsulation defines whether the template and styles defined within the component can affect the whole application or vice versa.
For ViewEncapsulation None - styles from the component propagate back to the main HTML and therefore are visible to all components on the page. Be careful with apps that have None and Native components in the application. All components with None encapsulation will have their styles duplicated in all components.
If you remove ViewEncapsulation propertythen it will take default one which is Emulated
In this case styles from main HTML propagate to the component. Styles defined in this component's @Component decorator are scoped to this component only.
answered Nov 23 '18 at 9:16
Hardik PatelHardik Patel
2,07211327
2,07211327
how can i apply property of parent to specific components only
– Kumail Hussain
Nov 23 '18 at 9:32
Or how can i turn off encapsulation in other components or allow in specific components
– Kumail Hussain
Nov 23 '18 at 9:33
You can not do it for specific component. Either you expose to all component or keep it secret. In your case you need to make unique class at global level.
– Hardik Patel
Nov 23 '18 at 10:35
can you suggest an example for global level class
– Kumail Hussain
Nov 23 '18 at 10:36
put css in style.css file
– Hardik Patel
Nov 23 '18 at 10:36
|
show 4 more comments
how can i apply property of parent to specific components only
– Kumail Hussain
Nov 23 '18 at 9:32
Or how can i turn off encapsulation in other components or allow in specific components
– Kumail Hussain
Nov 23 '18 at 9:33
You can not do it for specific component. Either you expose to all component or keep it secret. In your case you need to make unique class at global level.
– Hardik Patel
Nov 23 '18 at 10:35
can you suggest an example for global level class
– Kumail Hussain
Nov 23 '18 at 10:36
put css in style.css file
– Hardik Patel
Nov 23 '18 at 10:36
how can i apply property of parent to specific components only
– Kumail Hussain
Nov 23 '18 at 9:32
how can i apply property of parent to specific components only
– Kumail Hussain
Nov 23 '18 at 9:32
Or how can i turn off encapsulation in other components or allow in specific components
– Kumail Hussain
Nov 23 '18 at 9:33
Or how can i turn off encapsulation in other components or allow in specific components
– Kumail Hussain
Nov 23 '18 at 9:33
You can not do it for specific component. Either you expose to all component or keep it secret. In your case you need to make unique class at global level.
– Hardik Patel
Nov 23 '18 at 10:35
You can not do it for specific component. Either you expose to all component or keep it secret. In your case you need to make unique class at global level.
– Hardik Patel
Nov 23 '18 at 10:35
can you suggest an example for global level class
– Kumail Hussain
Nov 23 '18 at 10:36
can you suggest an example for global level class
– Kumail Hussain
Nov 23 '18 at 10:36
put css in style.css file
– Hardik Patel
Nov 23 '18 at 10:36
put css in style.css file
– Hardik Patel
Nov 23 '18 at 10:36
|
show 4 more comments
simple old css hack
Add a unique class like
.app-component
to the top most element of your component, and make sure all other styles are child of this class.
Better yet if you are using any kind of css preprocessors.
Info:
When using ViewEncapsulation.None, the defined styles are added to the html page using style tag in the head element.
So by ancient conventions, your styles get cascaded.
Hence when you have time invest your time in css styling conventions like BEM or something else.
Ciao!
Where to add the class in css file
– Kumail Hussain
Nov 23 '18 at 10:35
add a comment |
simple old css hack
Add a unique class like
.app-component
to the top most element of your component, and make sure all other styles are child of this class.
Better yet if you are using any kind of css preprocessors.
Info:
When using ViewEncapsulation.None, the defined styles are added to the html page using style tag in the head element.
So by ancient conventions, your styles get cascaded.
Hence when you have time invest your time in css styling conventions like BEM or something else.
Ciao!
Where to add the class in css file
– Kumail Hussain
Nov 23 '18 at 10:35
add a comment |
simple old css hack
Add a unique class like
.app-component
to the top most element of your component, and make sure all other styles are child of this class.
Better yet if you are using any kind of css preprocessors.
Info:
When using ViewEncapsulation.None, the defined styles are added to the html page using style tag in the head element.
So by ancient conventions, your styles get cascaded.
Hence when you have time invest your time in css styling conventions like BEM or something else.
Ciao!
simple old css hack
Add a unique class like
.app-component
to the top most element of your component, and make sure all other styles are child of this class.
Better yet if you are using any kind of css preprocessors.
Info:
When using ViewEncapsulation.None, the defined styles are added to the html page using style tag in the head element.
So by ancient conventions, your styles get cascaded.
Hence when you have time invest your time in css styling conventions like BEM or something else.
Ciao!
answered Nov 23 '18 at 10:00
Akash PanigrahiAkash Panigrahi
714
714
Where to add the class in css file
– Kumail Hussain
Nov 23 '18 at 10:35
add a comment |
Where to add the class in css file
– Kumail Hussain
Nov 23 '18 at 10:35
Where to add the class in css file
– Kumail Hussain
Nov 23 '18 at 10:35
Where to add the class in css file
– Kumail Hussain
Nov 23 '18 at 10:35
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53443566%2fview-encapsulation-issue-angular5%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
Can you share your style files as well?
– Bunyamin Coskuner
Nov 23 '18 at 9:10