In angular 5, what is absolutely necessary in order to route using routerLink to another component view?
up vote
-1
down vote
favorite
my router link within company-details.component.html is
<a class="btn btn-white btn-xs" [routerLink]="['/companyDetails', nextCompanyID]">
within my app.module.ts file the following path is present
{ path: 'companyDetails/:companyID', component: CompanyDetailsComponent },
company-details.component.ts has
import { ActivatedRoute, Router, RouterModule, Routes } from "@angular/router";
nextCompanyID: number;
and
constructor(
private router: Router,
...
this.nextCompanyID = 2;
as necessary.
Im at http://localhost:55588/companyDetails/1 , and when I click the button to navigate, the top bar shows http://localhost:55588/companyDetails/2, but nothing is invoked, such as OnInit. And the view data or lifecycle events dont appear to be re-invoked as expected.
What are the necessary and sufficient steps needed in order for the above routing to work as expected?
the resulting element is
<a class="btn btn-white btn-xs" ng-reflect-router-link="/companyDetails,2" href="/companyDetails/2"><i class="fa fa-chevron-right"></i></a>
which appears okay to me.
something wrong with routerLink?
Ive read
https://v5.angular.io/api/router/RouterLink
and the only clearly defined requirement I can identify is
If you use dynamic values to generate the link, you can pass an array of path segments, followed by the params for each segment.
I appear to be satisfying this requirement. What else is Required?
Any help is appreciated.
angular typescript
|
show 3 more comments
up vote
-1
down vote
favorite
my router link within company-details.component.html is
<a class="btn btn-white btn-xs" [routerLink]="['/companyDetails', nextCompanyID]">
within my app.module.ts file the following path is present
{ path: 'companyDetails/:companyID', component: CompanyDetailsComponent },
company-details.component.ts has
import { ActivatedRoute, Router, RouterModule, Routes } from "@angular/router";
nextCompanyID: number;
and
constructor(
private router: Router,
...
this.nextCompanyID = 2;
as necessary.
Im at http://localhost:55588/companyDetails/1 , and when I click the button to navigate, the top bar shows http://localhost:55588/companyDetails/2, but nothing is invoked, such as OnInit. And the view data or lifecycle events dont appear to be re-invoked as expected.
What are the necessary and sufficient steps needed in order for the above routing to work as expected?
the resulting element is
<a class="btn btn-white btn-xs" ng-reflect-router-link="/companyDetails,2" href="/companyDetails/2"><i class="fa fa-chevron-right"></i></a>
which appears okay to me.
something wrong with routerLink?
Ive read
https://v5.angular.io/api/router/RouterLink
and the only clearly defined requirement I can identify is
If you use dynamic values to generate the link, you can pass an array of path segments, followed by the params for each segment.
I appear to be satisfying this requirement. What else is Required?
Any help is appreciated.
angular typescript
Can you post how you grab the params in yourcompany-details-component
– Suryan
Nov 12 at 3:34
@Suryan Can you please be more specific?
– joey
Nov 12 at 3:35
1
I mean you should do something like in your component i.e.this.activatedroute.params.subscribe(params => fetch data related to the params here)
– Suryan
Nov 12 at 3:36
nextCompanyID: number; and this.nextCompanyID = 2;. Updated above.
– joey
Nov 12 at 3:38
what does activatedRoute have to do with the my above scenario?
– joey
Nov 12 at 3:40
|
show 3 more comments
up vote
-1
down vote
favorite
up vote
-1
down vote
favorite
my router link within company-details.component.html is
<a class="btn btn-white btn-xs" [routerLink]="['/companyDetails', nextCompanyID]">
within my app.module.ts file the following path is present
{ path: 'companyDetails/:companyID', component: CompanyDetailsComponent },
company-details.component.ts has
import { ActivatedRoute, Router, RouterModule, Routes } from "@angular/router";
nextCompanyID: number;
and
constructor(
private router: Router,
...
this.nextCompanyID = 2;
as necessary.
Im at http://localhost:55588/companyDetails/1 , and when I click the button to navigate, the top bar shows http://localhost:55588/companyDetails/2, but nothing is invoked, such as OnInit. And the view data or lifecycle events dont appear to be re-invoked as expected.
What are the necessary and sufficient steps needed in order for the above routing to work as expected?
the resulting element is
<a class="btn btn-white btn-xs" ng-reflect-router-link="/companyDetails,2" href="/companyDetails/2"><i class="fa fa-chevron-right"></i></a>
which appears okay to me.
something wrong with routerLink?
Ive read
https://v5.angular.io/api/router/RouterLink
and the only clearly defined requirement I can identify is
If you use dynamic values to generate the link, you can pass an array of path segments, followed by the params for each segment.
I appear to be satisfying this requirement. What else is Required?
Any help is appreciated.
angular typescript
my router link within company-details.component.html is
<a class="btn btn-white btn-xs" [routerLink]="['/companyDetails', nextCompanyID]">
within my app.module.ts file the following path is present
{ path: 'companyDetails/:companyID', component: CompanyDetailsComponent },
company-details.component.ts has
import { ActivatedRoute, Router, RouterModule, Routes } from "@angular/router";
nextCompanyID: number;
and
constructor(
private router: Router,
...
this.nextCompanyID = 2;
as necessary.
Im at http://localhost:55588/companyDetails/1 , and when I click the button to navigate, the top bar shows http://localhost:55588/companyDetails/2, but nothing is invoked, such as OnInit. And the view data or lifecycle events dont appear to be re-invoked as expected.
What are the necessary and sufficient steps needed in order for the above routing to work as expected?
the resulting element is
<a class="btn btn-white btn-xs" ng-reflect-router-link="/companyDetails,2" href="/companyDetails/2"><i class="fa fa-chevron-right"></i></a>
which appears okay to me.
something wrong with routerLink?
Ive read
https://v5.angular.io/api/router/RouterLink
and the only clearly defined requirement I can identify is
If you use dynamic values to generate the link, you can pass an array of path segments, followed by the params for each segment.
I appear to be satisfying this requirement. What else is Required?
Any help is appreciated.
angular typescript
angular typescript
edited Nov 12 at 3:41
asked Nov 12 at 3:11
joey
2,0932226
2,0932226
Can you post how you grab the params in yourcompany-details-component
– Suryan
Nov 12 at 3:34
@Suryan Can you please be more specific?
– joey
Nov 12 at 3:35
1
I mean you should do something like in your component i.e.this.activatedroute.params.subscribe(params => fetch data related to the params here)
– Suryan
Nov 12 at 3:36
nextCompanyID: number; and this.nextCompanyID = 2;. Updated above.
– joey
Nov 12 at 3:38
what does activatedRoute have to do with the my above scenario?
– joey
Nov 12 at 3:40
|
show 3 more comments
Can you post how you grab the params in yourcompany-details-component
– Suryan
Nov 12 at 3:34
@Suryan Can you please be more specific?
– joey
Nov 12 at 3:35
1
I mean you should do something like in your component i.e.this.activatedroute.params.subscribe(params => fetch data related to the params here)
– Suryan
Nov 12 at 3:36
nextCompanyID: number; and this.nextCompanyID = 2;. Updated above.
– joey
Nov 12 at 3:38
what does activatedRoute have to do with the my above scenario?
– joey
Nov 12 at 3:40
Can you post how you grab the params in your
company-details-component
– Suryan
Nov 12 at 3:34
Can you post how you grab the params in your
company-details-component
– Suryan
Nov 12 at 3:34
@Suryan Can you please be more specific?
– joey
Nov 12 at 3:35
@Suryan Can you please be more specific?
– joey
Nov 12 at 3:35
1
1
I mean you should do something like in your component i.e.
this.activatedroute.params.subscribe(params => fetch data related to the params here)
– Suryan
Nov 12 at 3:36
I mean you should do something like in your component i.e.
this.activatedroute.params.subscribe(params => fetch data related to the params here)
– Suryan
Nov 12 at 3:36
nextCompanyID: number; and this.nextCompanyID = 2;. Updated above.
– joey
Nov 12 at 3:38
nextCompanyID: number; and this.nextCompanyID = 2;. Updated above.
– joey
Nov 12 at 3:38
what does activatedRoute have to do with the my above scenario?
– joey
Nov 12 at 3:40
what does activatedRoute have to do with the my above scenario?
– joey
Nov 12 at 3:40
|
show 3 more comments
3 Answers
3
active
oldest
votes
up vote
1
down vote
Angular creates a new component only when you are navigating from different component, but in your case you are trying to navigate to same component. So angular does not create a new component and in turn ngOnInit will not be triggered. If you want companyId
this.activatedroute.params.subscribe(params => {Get companyId over here})
add a comment |
up vote
0
down vote
Make sure you have <router-outlet></router-outlet>
. This is where the content of the navigated route will be displayed.
add a comment |
up vote
0
down vote
My end solution
ngOnInit() {
this.activatedRoute.params.subscribe(
s => {
// logic here that we want invoked when param is changed
this.currentCompanyID = +this.activatedRoute.snapshot.params["companyID"];
this.clearAllForms();
this.refreshComponentData();
});
this.refreshComponentData();
}
As mentioned above, navigation between the same component doesnt result in ngOnInit() being invoked. The above solution works well.
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
Angular creates a new component only when you are navigating from different component, but in your case you are trying to navigate to same component. So angular does not create a new component and in turn ngOnInit will not be triggered. If you want companyId
this.activatedroute.params.subscribe(params => {Get companyId over here})
add a comment |
up vote
1
down vote
Angular creates a new component only when you are navigating from different component, but in your case you are trying to navigate to same component. So angular does not create a new component and in turn ngOnInit will not be triggered. If you want companyId
this.activatedroute.params.subscribe(params => {Get companyId over here})
add a comment |
up vote
1
down vote
up vote
1
down vote
Angular creates a new component only when you are navigating from different component, but in your case you are trying to navigate to same component. So angular does not create a new component and in turn ngOnInit will not be triggered. If you want companyId
this.activatedroute.params.subscribe(params => {Get companyId over here})
Angular creates a new component only when you are navigating from different component, but in your case you are trying to navigate to same component. So angular does not create a new component and in turn ngOnInit will not be triggered. If you want companyId
this.activatedroute.params.subscribe(params => {Get companyId over here})
answered Nov 12 at 3:59


Bharathkumar kamal
764
764
add a comment |
add a comment |
up vote
0
down vote
Make sure you have <router-outlet></router-outlet>
. This is where the content of the navigated route will be displayed.
add a comment |
up vote
0
down vote
Make sure you have <router-outlet></router-outlet>
. This is where the content of the navigated route will be displayed.
add a comment |
up vote
0
down vote
up vote
0
down vote
Make sure you have <router-outlet></router-outlet>
. This is where the content of the navigated route will be displayed.
Make sure you have <router-outlet></router-outlet>
. This is where the content of the navigated route will be displayed.
answered Nov 12 at 3:46
Naresh
145
145
add a comment |
add a comment |
up vote
0
down vote
My end solution
ngOnInit() {
this.activatedRoute.params.subscribe(
s => {
// logic here that we want invoked when param is changed
this.currentCompanyID = +this.activatedRoute.snapshot.params["companyID"];
this.clearAllForms();
this.refreshComponentData();
});
this.refreshComponentData();
}
As mentioned above, navigation between the same component doesnt result in ngOnInit() being invoked. The above solution works well.
add a comment |
up vote
0
down vote
My end solution
ngOnInit() {
this.activatedRoute.params.subscribe(
s => {
// logic here that we want invoked when param is changed
this.currentCompanyID = +this.activatedRoute.snapshot.params["companyID"];
this.clearAllForms();
this.refreshComponentData();
});
this.refreshComponentData();
}
As mentioned above, navigation between the same component doesnt result in ngOnInit() being invoked. The above solution works well.
add a comment |
up vote
0
down vote
up vote
0
down vote
My end solution
ngOnInit() {
this.activatedRoute.params.subscribe(
s => {
// logic here that we want invoked when param is changed
this.currentCompanyID = +this.activatedRoute.snapshot.params["companyID"];
this.clearAllForms();
this.refreshComponentData();
});
this.refreshComponentData();
}
As mentioned above, navigation between the same component doesnt result in ngOnInit() being invoked. The above solution works well.
My end solution
ngOnInit() {
this.activatedRoute.params.subscribe(
s => {
// logic here that we want invoked when param is changed
this.currentCompanyID = +this.activatedRoute.snapshot.params["companyID"];
this.clearAllForms();
this.refreshComponentData();
});
this.refreshComponentData();
}
As mentioned above, navigation between the same component doesnt result in ngOnInit() being invoked. The above solution works well.
answered Nov 12 at 18:00
joey
2,0932226
2,0932226
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53255501%2fin-angular-5-what-is-absolutely-necessary-in-order-to-route-using-routerlink-to%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 post how you grab the params in your
company-details-component
– Suryan
Nov 12 at 3:34
@Suryan Can you please be more specific?
– joey
Nov 12 at 3:35
1
I mean you should do something like in your component i.e.
this.activatedroute.params.subscribe(params => fetch data related to the params here)
– Suryan
Nov 12 at 3:36
nextCompanyID: number; and this.nextCompanyID = 2;. Updated above.
– joey
Nov 12 at 3:38
what does activatedRoute have to do with the my above scenario?
– joey
Nov 12 at 3:40