これは私がgithubで得た最も近いものです
私のサービスは
@Injectable()
export class TodoService {}
しかし、ES2016 デコレータを使用してコンポーネントに挿入する方法がわかりません。それは可能ですか、それともデコレータはTypescript固有ですか? TSにはオプションがあることを知っていemitDecoratorMetadata
ます。
これは私がgithubで得た最も近いものです
私のサービスは
@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 の一部ではありません (TypeScript 固有のものと見なすことができます)。ただし、後で標準に追加できます)。
本当に 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 依存関係の挿入をよりよく理解することをお勧めします。