これは私がon githubを得ている最も近いES2016デコレータ付きAngular2 DI?
私のサービスは
@Injectable() export class TodoService {}
あるしかし、私はES2016デコレータを使用して、私のコンポーネントに注入する方法がわかりませんよ。それは可能ですか、またはデコレータTypescript固有ですか? TSにはemitDecoratorMetadata
オプションがあります。
これは私がon githubを得ている最も近いES2016デコレータ付きAngular2 DI?
私のサービスは
@Injectable() export class TodoService {}
あるしかし、私はES2016デコレータを使用して、私のコンポーネントに注入する方法がわかりませんよ。それは可能ですか、またはデコレータTypescript固有ですか? TSにはemitDecoratorMetadata
オプションがあります。
コンポーネントにサービスを "提供" するために使用providers又はviewProviders:
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(todoService: TodoService) {
this.todoService = todoService;
}
}
又はInject
パラメータデコレータを使用して:パラメータのタイプを指定成分コンストラクタに
噴射サービス。
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
constructor(@Inject(TodoService) todoService) {
this.todoService = todoService;
}
}
パラメータデコレータはES2016(あなたが活字体の特定としてそれを考えることができる)の一部ではありません。しかし、彼らはadded to the standard laterになることができます)。
あなたが本当にES6/ES7を使用したい場合は、parameters
の静的ゲッターを使用します。
@Component({
// ...
providers: [TodoService]
})
class TodoComponent() {
static get parameters() {
return [[TodoService]]; // you can also return just [TodoService]
}
constructor(todoService) {
this.todoService = todoService;
}
}
また、私はより良いangular2依存性の注入を理解するためにthis articleを読んですることをお勧めいたします。
これらの両方の実装はTypescript固有ですか? ES2016デコレータを使用する方法はありません(パラメータデコレータは含まれていませんが、このリンクに感謝します)。 – iksose
@iksose私はES6/ES7の例を追加しました – alexpods
完璧!すごくうまくいきます、ありがとう@alexpods – iksose