2017-09-01 12 views
1

私はurlからstartdateを取得しようとしています。 URLは以下http://sitename/booking?startdate=28-08-2017 のように見える私のコードは角4のURLからparamを取得するには?

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

} 

です:基本hrefが設定されていません。 APP_BASE_HREFトークンの値を指定するか、ドキュメントに基本要素を追加してください。 ;ゾーン: ;タスク:Promise.then;値: エラー:ベースhrefが設定されていません。 APP_BASE_HREFトークンの値を指定するか、ドキュメントに基本要素を追加してください。

角度はベースhrefをどのように知るべきですか?

+1

https://angular.io/guide/router#the-basics –

答えて

11

これはURLからのparamsを取得するトリックを行う必要があります。

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

ローカル変数の日付は今URLからSTARTDATEパラメータが含まれている必要があります。モジュールRouterとParamsは削除できます(クラス内の他の場所で使用されていない場合)。

+0

この答えは仕事ですが、なぜページを更新した後URLにパラメータがあると、ページは空白になりますか? –

+0

伝えるのは難しいです。私の頭に浮かぶ最初のことは、多分パラメータを入力せずに、typescriptコードのngOnInitセクションをナビゲートしていることでしょうか?それからそれは自然に任意のパラメータなしでコンポーネントに戻ります。 –

7

マイルート:

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

マイコンポーネント:

public id: string; 

constructor(private route: ActivatedRoute) {} 

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

私の場合、この回答は受け入れられたものよりも優れています。ありがとう! – Ben

関連する問題