I'm trying to get startdate from the URL.
The URL looks like http://sitename/booking?startdate=28-08-2017
My code is below:
aap.module.ts
import {...};
@NgModule({
declarations: [
AppComponent, ModalComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
JsonpModule,
ReactiveFormsModule,
RouterModule.forRoot([{
path: '',
component: AppComponent
},
]),
],
providers: [ContactService, AddonService, MainService],
bootstrap: [AppComponent]
})
export class AppModule { }
aap.component.ts
import {...}
import {Router, ActivatedRoute, Params} from '@angular/router';
constructor(private activatedRoute: ActivatedRoute) {
// subscribe to router event
this.activatedRoute.queryParams.subscribe((params: Params) => {
console.log(params);
});
}
But its giving the below error
Unhandeled Promise rejection: No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document. ; Zone: ; Task: Promise.then ; Value: Error: No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.
How does Angular know the base href?
This question is related to
angular
Routes
export const MyRoutes: Routes = [
{ path: '/items/:id', component: MyComponent }
]
Component
import { ActivatedRoute } from '@angular/router';
public id: string;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.id = this.route.snapshot.paramMap.get('id');
}
use paramMap
This will provide param names and their values
//http://localhost:4200/categories/1
//{ path: 'categories/:category', component: CategoryComponent },
import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.route.paramMap.subscribe(params => {
console.log(params)
})
}
Hope this helps someone. In case that u get undefined while doing this with something that's not "id", check if u are passing right parameter:
If your route in parent-component.ts is:
onSelect(elem) {
this.router.navigateByUrl(`/element/${elem.type}`);
}
And in child-component.ts
type: string;
elem: ElemModel;
constructor(
private elemService: ElemService,
private route: ActivatedRoute
) {}
ngOnInit() {
this.route.params.subscribe((data) => {
console.log(data); // 'data' will give u an object with the type inside, check the
name of that type inside console of devTool, as u will put that name inside
data[HERE] down below.
this.type = data["elem-type-maybe"]; // Don't do this.type = data["type"], do
data[NAME] as said above.
this.elem = this.elemService.getElem(this.type); // getElem is method in service
which returns that specific type.
});
You can try this:
this.activatedRoute.paramMap.subscribe(x => {
let id = x.get('id');
console.log(id);
});
Check parameters from URL string or as :param
in your routeConfig
downstream.component.ts
...
import {Router,ActivatedRoute} from '@angular/router';
...
export class DownstreamComponent {
constructor(
private route: ActivatedRoute,
private router: Router
) {
if(this.route.snapshot.queryParams)
console.log(this.route.snapshot.params); // e.g. :param1 in routeConfig
if(this.route.snapshot.queryParamMap.get('param1'))
console.log(this.route.snapshot.queryParamMap.get('param1')); // e.g. in URI ?param1=blah
}
}
In angular, They separate it into 2 kind of url.
URL pattern /heroes/:limit
. Example: /heroes/20
route.snapshot.paramMap.get
.route.paramMap
to get paramsURL pattern /heroes
. Example: /heroes?limit=20
route.snapshot.queryParamMap
The accepted answer uses the observable to retrieve the parameter which can be useful in the parameter will change throughtout the component lifecycle.
If the parameter will not change, one can consider using the params object on the snapshot of the router url.
snapshot.params
returns all the parameters in the URL in an object.
constructor(private route: ActivateRoute){}
ngOnInit() {
const allParams = this.route.snapshot.params // allParams is an object
const param1 = allParams.param1 // retrieve the parameter "param1"
}
import {Router, ActivatedRoute, Params} from '@angular/router';
constructor(private activatedRoute: ActivatedRoute) { }
ngOnInit() {
this.activatedRoute.paramMap
.subscribe( params => {
let id = +params.get('id');
console.log('id' + id);
console.log(params);
id12
ParamsAsMap {params: {…}}
keys: Array(1)
0: "id"
length: 1
__proto__: Array(0)
params:
id: "12"
__proto__: Object
__proto__: Object
}
)
}
constructor(private activatedRoute: ActivatedRoute) {
}
ngOnInit() {
this.activatedRoute.params.subscribe(paramsId => {
this.id = paramsId.id;
console.log(this.id);
});
}
Source: Stackoverflow.com