เชิงมุมให้ตัวเลือกบริการเดี่ยว / โรงงานเท่านั้น วิธีหนึ่งคือการมีบริการจากโรงงานที่จะสร้างอินสแตนซ์ใหม่สำหรับคุณภายในคอนโทรลเลอร์หรืออินสแตนซ์สำหรับผู้บริโภคอื่น ๆ สิ่งเดียวที่ถูกฉีดเข้าไปคือคลาสที่สร้างอินสแตนซ์ใหม่ นี่เป็นสถานที่ที่ดีในการแทรกการอ้างอิงอื่น ๆ หรือเพื่อเริ่มต้นอ็อบเจ็กต์ใหม่ของคุณตามข้อกำหนดของผู้ใช้ (เพิ่มบริการหรือกำหนดค่า)
namespace admin.factories {
  'use strict';
  export interface IModelFactory {
    build($log: ng.ILogService, connection: string, collection: string, service: admin.services.ICollectionService): IModel;
  }
  class ModelFactory implements IModelFactory {
 
 
    build($log: ng.ILogService, connection: string, collection: string, service: admin.services.ICollectionService): IModel {
      return new Model($log, connection, collection, service);
    }
  }
  export interface IModel {
    
  }
  class Model implements IModel {
    constructor(
      private $log: ng.ILogService,
      private connection: string,
      private collection: string,
      service: admin.services.ICollectionService) {
    };
  }
  angular.module('admin')
    .service('admin.services.ModelFactory', ModelFactory);
}
จากนั้นในกรณีผู้บริโภคของคุณคุณต้องการบริการจากโรงงานและเรียกใช้วิธีการสร้างในโรงงานเพื่อรับอินสแตนซ์ใหม่เมื่อคุณต้องการ
  class CollectionController  {
    public model: admin.factories.IModel;
    static $inject = ['$log', '$routeParams', 'admin.services.Collection', 'admin.services.ModelFactory'];
    constructor(
      private $log: ng.ILogService,
      $routeParams: ICollectionParams,
      private service: admin.services.ICollectionService,
      factory: admin.factories.IModelFactory) {
      this.connection = $routeParams.connection;
      this.collection = $routeParams.collection;
      this.model = factory.build(this.$log, this.connection, this.collection, this.service);
    }
  }
คุณจะเห็นว่ามันให้โอกาสในการฉีดบริการเฉพาะบางอย่างที่ไม่มีในขั้นตอนจากโรงงาน คุณสามารถมีการฉีดเกิดขึ้นบนอินสแตนซ์โรงงานเพื่อใช้กับอินสแตนซ์ Model ทั้งหมดได้เสมอ
โปรดทราบว่าฉันต้องตัดโค้ดบางส่วนออกดังนั้นฉันอาจทำผิดบริบทบางอย่าง ... หากคุณต้องการตัวอย่างโค้ดที่ใช้งานได้โปรดแจ้งให้เราทราบ
ฉันเชื่อว่า NG2 จะมีตัวเลือกในการฉีดอินสแตนซ์ใหม่ของบริการของคุณในสถานที่ที่เหมาะสมใน DOM ของคุณดังนั้นคุณจึงไม่จำเป็นต้องสร้างโรงงานของคุณเอง จะต้องรอดู :)