私はクラスを持っていますLayer
:
import {AfterViewInit, ViewChild} from 'angular2/core';
export class Layer implements AfterViewInit {
@ViewChild('element') element;
public canvas: HTMLCanvasElement = null;
public context: CanvasRenderingContext2D = null;
ngAfterViewInit() {
this.canvas = this.element.nativeElement;
this.context = this.canvas.getContext('2d');
}
}
私のコンポーネントで拡張しますLines
:
import {Component} from 'angular2/core';
import {Layer} from './layer';
import {Game} from '../../providers/Game';
@Component({
selector: 'lines-component',
template: require('./template.html'),
styles: [`
canvas {
z-index: 2;
}
`]
})
export class Lines extends Layer {
constructor(public game: Game) {
super();
}
}
ご覧のとおり、Game
から継承するすべてのコンポーネントにサービスを注入する必要がありLayer
ます。ただし、クラスにサービスを注入したいLayer
ので、それを使用してサービスに依存するメソッドを作成できます。また、毎回自分でコンポーネントにサービスを注入する必要はありません。
言うまでもなく、Layer
コンポーネントにサービスを注入しても機能しません。
angular 2.0.0-beta.0 を使用しています