2016-07-19 9 views
2

これは簡単な質問ですが、私は様々なコンポーネントで私のアプリケーションの現在のURLを取得したいので、私はルーティングコンポーネントからこの値を派生させたくありませんそれは時間内に削除/変更される可能性があります。ですから、Angular2のLocationクラスで作業したいと思います。私のコンポーネントでは、私は、以下を追加し...私のコンポーネントでAngular2 - browser_adapter.ts ORIGINAL EXCEPTION:ロケーションのプロバイダがありません

import {Location} from '@angular/common'; 

私はこれで作業しようとすると、

constructor(public translate:TranslateService, router:Router, private location: Location) 

は今、私は私の中に誤りに気づく...私のコンストラクタでこれを宣言コンソール... browser_adapter.ts:82 ORIGINAL EXCEPTION: No provider for Location!

ロケーションクラスは@angular/commonにありますか?私はここでどうやってミスをしたのか分かりません。私は、私はそれがあまり圧倒的にするために、これを編集したAngular2のリリース候補4をここに私のコードは完全に次のようになります使用しています:

import {Location} from '@angular/common'; 

@Component({ 
    selector: 'my-app', 
    directives: [ ], 
    pipes: [ ], 
    templateUrl: 'src/main.html' 
}) 
class MyComponent { 

    constructor(private location: Location) { 
     console.log(location); 
    } 
} 

答えて

0

は、コンポーネントメタデータ内のディレクティブとしてROUTER_DIRECTIVEを渡す必要があるコンポーネントでLocationを注入します。

これにより、Locationが正しく挿入されます。

import {Location} from '@angular/common'; 
    import { ROUTER_DIRECTIVES } from '@angular/router' 

    @Component({ 
     selector: 'my-app', 
     directives: [ ROUTER_DIRECTIVES], 
     pipes: [ ], 
     templateUrl: 'src/main.html' 
    }) 
    class MyComponent { 
    } 

またthis.router.url

Sourceによってルータ自体、あなたからURLを得ることができる:例のセクションを参照してください。

関連する問題