Skip to content

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

Closed
wants to merge 1 commit into from
Closed

feat(schematics): replace href with routerLink #19341

wants to merge 1 commit into from

Conversation

santoshyadavdev
Copy link
Contributor

I use this schematic very often and always replace href with routerLink, it will be better if we make routerLink default.

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
@googlebot googlebot added the cla: yes PR author has agreed to Google's Contributor License Agreement label May 13, 2020
<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>
Copy link
Member

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.

Copy link
Contributor Author

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

Copy link
Member

@devversion devversion May 13, 2020

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.

Copy link
Contributor Author

@santoshyadavdev santoshyadavdev May 13, 2020

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.

Copy link
Member

@devversion devversion May 13, 2020

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.

Copy link
Member

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.

@devversion devversion requested a review from Splaktar May 13, 2020 09:33
@jelbourn
Copy link
Member

I agree with @devversion and @crisbeto. I think this is a tiny enough inconvenience that we don't want to change it right now.

@jelbourn jelbourn closed this May 13, 2020
Copy link
Contributor

@Splaktar Splaktar left a 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.

@santoshyadavdev
Copy link
Contributor Author

Thank @Splaktar, @jelbourn can you reopen the PR, please?

@Splaktar
Copy link
Contributor

@santoshyadav198613 you should be able to re-open it, but I suggest that you wait until you push up changes to make this optional.

@santoshyadavdev
Copy link
Contributor Author

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

@santoshyadavdev
Copy link
Contributor Author

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.

@Splaktar
Copy link
Contributor

Splaktar commented May 25, 2020

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

@santoshyadavdev
Copy link
Contributor Author

Sure will do that.

@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Jun 25, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla: yes PR author has agreed to Google's Contributor License Agreement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants