Как получить параметр от url в угловом 4?

Я пытаюсь получить startdate из url. Url выглядит как http://sitename/booking? Startdate = 28-08-2017 ниже - мой код

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);
  });

}

его пропуская ниже ошибку

Unhandled Promise rejection: Нет базового набора href. Укажите значение для токена APP_BASE_HREF или добавьте базовый элемент в документ. ; Зона:; Задача: Promise.then; Значение: ошибка: нет базовой настройки href. Укажите значение для токена APP_BASE_HREF или добавьте базовый элемент в документ.

Как угловой должен знать базовый уровень href?

Ответы

Ответ 1

Это должно сделать трюк, восстанавливающий параметры из URL:

constructor(private activatedRoute: ActivatedRoute) {
  this.activatedRoute.queryParams.subscribe(params => {
        let date = params['startdate'];
        console.log(date); // Print the parameter to the console. 
    });
}

Локальная дата переменной теперь должна содержать параметр startdate из URL-адреса. Модули Router и Params могут быть удалены (если они не используются в другом месте в классе).

Ответ 2

Маршруты

export const MyRoutes: Routes = [
    { path: '/items/:id', component: MyComponent }
]

Составная часть

import { ActivatedRoute } from '@angular/router';
public id: string;

constructor(private route: ActivatedRoute) {}

ngOnInit() {
   this.id = this.route.snapshot.paramMap.get('id');
}

Ответ 3

constructor(private activatedRoute: ActivatedRoute) {
}

ngOnInit() {
    this.activatedRoute.params.subscribe(paramsId => {
        this.id = paramsId.id;
    });
    console.log(this.id);

 }

Ответ 4

Принятый ответ использует наблюдаемый для извлечения параметра, который может быть полезен в параметре, будет меняться через жизненный цикл компонента.

Если параметр не изменится, можно использовать объект params для моментального снимка URL-адреса маршрутизатора.

snapshot.params возвращает все параметры в URL-адресе в объекте.

constructor(private route: ActivateRoute){}

ngOnInit() {
   const allParams = this.route.snapshot.params // allParams is an object
   const param1 = allParams.param1 // retrieve the parameter "param1"
}

Ответ 5

использовать paramMap

Это даст имена параметров и их значения

//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)
  })
}

Ответ 6

Проверьте параметры из строки URL или как :param в вашем 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
}

}

Ответ 7

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
        }
        )

      }

Ответ 8

Это работает для меня Javascript единственным решением

fooobar.com/info/5739/...

вызовите это где угодно, чтобы получить параметр.

alert(this.gup('option', null));

Включить эту функцию

  gup(name, url) {
    if (!url) {
      url = location.href;
    }
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    const regexS = '[\\?&]' + name + '=([^&#]*)';
    const regex = new RegExp(regexS);
    const results = regex.exec(url);
    return results == null ? null : results[1];
  }