-
Notifications
You must be signed in to change notification settings - Fork 26.2k
Add HMR when using component styles and template #39367
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@hansl do this issue belongs to the CLI ? |
This is technically within the Angular Core team, but it's unclear whether this is doable without breaking changes. It might be possible without any changes to Angular as well, if you can unload Components and reload them. He's asking for HMR support, which would allow API endpoints to replace style/templates of certain components (or delete the component from memory, and reload it from a new source), instead of rebuilding the whole Angular bootstrap. |
A lot of time has passed since this question was asked. Are there any updates? I've seen people doing HMR with Angular, but never with component level isolation. |
Would appreciate an update on this issue. |
After tried React hot CSS reload the Angular CSS reload with page reload is unbearable. Really expect this feature! |
any news about that ? i also can have HMR for global scss files, but not for component specific scss files, really look forward to it as well |
+1 |
This can be doable with proper HMR configuration. I think this can be closed, as this is not related to Angular. import { ApplicationRef, NgModuleRef } from '@angular/core';
import { createNewHosts, removeNgStyles } from '@angularclass/hmr';
export const hmrBootstrap = (module: any, bootstrap: () => Promise<NgModuleRef<any>>): void => {
let ngModule: NgModuleRef<any>;
module.hot.accept();
bootstrap().then((mod) => (ngModule = mod));
module.hot.dispose(() => {
const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef);
const elements = appRef.components.map((c) => c.location.nativeElement);
const makeVisible = createNewHosts(elements);
removeNgStyles();
ngModule.destroy();
makeVisible();
});
}; |
how it's going? it been 4 years since this issue open. I belive that it's really important. It's helpful. And it's community voice |
@hiepxanh You can use |
@michaeljota I already try this. |
Also related from angular/angular-cli#19233
|
great, finally, I see a little attention on this |
The work you have done looks very interesting. I would like to follow the best practices the Angular team has defined, but the time penalty for having styles stored in each component is too significant. Perhaps your work will allow us to bridge the gap (somewhat) until this issue is resolved. |
long time no see, it is a little complex and have some block that I cannot continue, since I change to use tailwind, it doesn't useful anymore :D. maybe you should try tailwind sir. If I have a solution to update html code On The Fly, it will be so good |
WE NEED TRHIS!! |
Just came in here to say that this is 2024 and we still need this |
We need this |
@rohit-techolution have you tried Angular 18? It seems like hmr has improved on css, it's not 100% but there seems like an improvement, do they are working on it it seems. |
Enterprises cannot update to latest version as soon it is released. We are on 16-17. |
I believe they have it on priority, since it's improving and on the road map, just because it's not here today doesn't mean it's not coming. |
We need this |
We need this |
We still need this |
How did you manage to add hmr in angular 18 |
2023, 2024 I'm still waiting for this |
Using Angular 18 here, unfortunately, updating CSS or simple text in components still updates the whole application 😥 (i envy so much react devs) |
Angular |
Same here, on a brand new @angular/cli project, version 19.0.0, the only thing the (Maybe it should also be removed from the announcement post for now.) |
What the blog doesn't say is that template HMR only works for external template files (and not inline templates) for now. |
Tested with external template and it didn't update anything in the browser. |
Tried both without success |
You're right, a small regression sneaked in just before the release but was already fixed in #58724. It'll be shipped in the next patch release. |
It's fixed by the PR @JeanMeche mentioned. |
Template and style HMR now works on all platforms with Angular |
Time to edit my will, I got HMR before my children |
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
I'm submitting a ... (check one with "x")
Current behavior
Although the Angular+Webpack docs present the combo as "an excellent alternative to the SystemJS approach", loading component styles via
styles
orstyleUrls
results in a full page refresh, instead of style injection, which occurs when using SystemJS+lite-server.Expected behavior
A core feature of using Webpack+Webpack-dev-server in development is the availability of Hot Module Replacement. It is expected that HMR would work for css injection regardless of the style loading strategy used. Instead, currently changes to css or scss files which are included in a component's styles result in a full page reload.
Reproduction of the problem
What is the motivation / use case for changing the behavior?
Speed up the Angular 2 development process for CSS developers
Please tell us about your environment:
Angular version: 2.0.0
Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
Language: [all | TypeScript 2.02 | ES6/7 | ES5]
Webpack version: 1.13.2
Webpack-dev-server version: 1.14.1
Node (for AoT issues):
node --version
= 6.5.0The text was updated successfully, but these errors were encountered: