12

いつ @Inject を使用し、いつ @Injectable を使用するのかわかりません。

  import {Component, Inject, provide} from '@angular/core';
    import {Hamburger} from '../services/hamburger'; 
    export class App {
       bunType: string;
       constructor(@Inject(Hamburger) h) {
         this.bunType = h.bun.type;
       }
     }

と..

  import {Injectable} from '@angular/core';
    import {Bun} from './bun';
    @Injectable()
    export class Hamburger {
      constructor(public bun: Bun) {
      }
    }
4

2 に答える 2

13

@Injectableデコレーターは、関連するクラスのコンストラクターに挿入する依存関係に関するメタデータを実際に設定することを目的としています。パラメータを必要としないクラス デコレータです。このデコレータがなければ、依存関係は注入されません...

@Injectable()
export class SomeService {
  constructor(private http:Http) {
  }
}

デコレーターは@Inject、コンストラクター パラメーターのレベルで使用して、挿入する要素に関するメタデータを指定する必要があります。それがない場合、パラメータの型が使用されます (obj:SomeTypeは と同等です@Inject(SomeType) obj)。

@Injectable()
export class SomeService {
  constructor(@Inject(Http) private http:Http, @Inject('sometoken') obj) {
  }
}
于 2016-05-19T06:24:51.380 に答える