2016-08-03 12 views
3

Angular 1.5.xとAngularUI Router 1.0-alphaで導入された新しい.component()メソッドを使用して、コンポーネント内部から現在のルータ状態にアクセスするにはどうすればよいですか?例えば

(私はここにES2015を使用しTodd Motto's Angular Styleguideに従ってる):

import angular from 'angular'; 

const header = angular 
    .module('header', []) 
    .component('header', { 
     template: ` 
      <p>{{$state.current.name}}</p> 
     ` 
    }); 

注:ヘッダが子コンポーネントで、UI-ルータは、親コンポーネント内に注入され、構成されています。

しかし、$state.current.nameまたは単に$stateであっても、コンポーネントのテンプレートには何も表示されません。

私がしようとしていることのグローバルアイデアは、アプリケーションの現在の状態に応じて、ヘッダーにクラスを設定することです。

私は$rootScopeに状態を設定しようとしましたが、どちらもうまくいきません...私はAngularをかなり新しくしているのでおそらく何かが見当たりません。

答えて

3

あなたはコントローラにそれを注入:テンプレート内$ctrlに注意してください

import angular from 'angular'; 

const header = angular 
    .module('header', []) 
    .component('header', { 
     template: ` 
      <p>{{$ctrl.$state.current.name}}</p> 
     `, 
     controller: ['$state', function($state) { 
      this.$state = $state; 
     }] 
    }); 

+0

そうですね、ありがとう!私のコンポーネントがコントローラを持っていなかったので、私はその$状態を渡すためだけにコントローラを作成するつもりはありません:) – ClementParis016

関連する問題