-
Notifications
You must be signed in to change notification settings - Fork 6.8k
feat(schematics): replace href with routerLink #19341
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
feat(schematics): replace href with routerLink #19341
Conversation
We always use routerLink when working with angular, we can change in schematics as it will be anyways replaced by developers while working on a new application
<a mat-list-item href="#">Link 3</a> | ||
<a mat-list-item routerLink="/">Link 1</a> | ||
<a mat-list-item routerLink="/">Link 2</a> | ||
<a mat-list-item routerLink="/">Link 3</a> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we cannot do that as the schematic does not necessarily require @angular/router
to be installed and set up.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But the question is are we going to use href, the schematic will not throw an exception even if we make this change. And I replace it with routerLink every time
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure. My thinking is that the schematic intends to provide a basic foundation for a navigation and that it's not obvious whether the Angular router is used or not. Adding routerLink
is specific to the Angular router (even if it won't cause any type check error), and this might not be desired in all situations.
I definitely see the use-case for this though. We could have this as a prompt in the schematic, but then we probably should also ensure that @angular/router
is installed, and also add RouterModule
. Not sure if that is in scope for the schematic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can have routerLink default and move to href based on input, i don't have stats, but i am sure most of the time, developers will use routerLink.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I definitely agree that routerLink
is commonly used for navigation, but my point is that routerLink
does not work if @angular/router
and the RouterModule
are not set up.
It might not fail having a routerLink
attribute, but the href
is not set if the router module is not set up. Schematics should be helpful for beginners too, and leaving the code incomplete w/ needed additional manual action from users seems wrong.
The anchors will actually not be clickable if the module is not set up. So ideally, we'd ensure @angular/router
is set up, and setup the RouterModule
if needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @devversion that we can't assume that people will be using the router. If you go through ng new
, you have to explicitly select that you want the router to be included.
I agree with @devversion and @crisbeto. I think this is a tiny enough inconvenience that we don't want to change it right now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that it's out of scope for this schematic to add the RouterModule
. However, I think that it would be reasonable to add an opt-in argument for --routerEnabled
or something similar to enable using routerLink
here.
@santoshyadav198613 you should be able to re-open it, but I suggest that you wait until you push up changes to make this optional. |
Thanks @Splaktar will do that. |
Hi @Splaktar I am not able to change the status of PR, can you open this again. I pushed some changes which I need to verify. |
@santoshyadav198613 GitHub is complaining that the branch was force pushed or recreated, so it wants you to open a new PR. Sorry for the inconvenience. |
Sure will do that. |
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 use this schematic very often and always replace href with routerLink, it will be better if we make routerLink default.