簡體   English   中英

如何使用javascript裝飾器進行Angular2依賴注入?

[英]How to use Angular2 dependency injection with javascript decorators?

我試圖將一個服務(TodoStore)注入我的組件(TodoList)但是沒有裝飾器。 它的唯一工作方式是使用構造函數參數裝飾器

constructor(@Inject(TodoStore) store)

據我所知,這不是有效的ES7。 我試圖在類之前或構造函數之前放入注入,既不能用於Webpack。 我目前最符合標准的解決方案是

static get parameters() {
  return [[TodoStore]];
}

我的問題是有效的ES6 / ES7裝飾器注入依賴關系嗎?

實際上,您不需要使用@Inject批注。 您的服務需要具有@Injectable注釋。

import {Injectable} from 'angular2/core';

@Injectable()
export class TodoStore {
  (...)
}

為了能夠將它注入到組件中,只需將其添加到其構造函數的參數中並添加到其提供者列表中:

import {TodoStore} from './todoStore';

@Component({
  selector: 'todo-list',
  providers: [ TodoStore ],
  template: `
    (...)
  `
})
export class TodoListComponent {
  constructor(service:TodoStore) {
    this.service = service;
  }
  (...)
}

希望它對你有幫助,蒂埃里

嘗試這個:

import {Component, Inject} from 'angular2/core';
import {TodoStore} from './todoStore';

@Component(...)
export class TodoListComponent {
  constructor(service) {
    this.service = service;
  }
  ...
}

// Workaround for parameter annotations
TodoListComponent.parameters = [new Inject(TodoStore)];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM