我应该如何在Angle2中使用多次进样从另一个注射剂中扩展注射?

时间:2016-09-12 14:22:12

标签: angular typescript dependency-injection inject injectable

有可能做这样的事吗? (因为我尝试过,但没有成功):

var mongoose    =   require('mongoose');
var userSchema  = mongoose.Schema({
     profilePic : String,
     firstName  : String,
     lastName   : String,
     dateOfBirth_DateObject     : { 
        type : Date ,   
        default : Date(1994-03-18)
     },
     yearOfBirth_Integer : { 
        type : Number,  
        default : 0 
     },
     monthOfBirth_Integer  : { 
        type : Number,  
        default : 0 
     },
     dayOfBirth_Integer : { 
        type : Number,  
        default : 0 
     },
     gender_String  : String
)};
module.exports = mongoose.model('user', userSchema,'user');

2 个答案:

答案 0 :(得分:6)

有点 - 你必须对你的基类的构造函数进行super调用。只需传递所需的依赖项:

@Injectable()
class A {
  constructor(private http: Http){ // <-- Injection in root class
  }
  foo(){
    this.http.get()...
  };
}


@Injectable()
class B extends A{
  constructor(http: Http) {
    super(http);
  }

  bar() {
    this.foo();
  }
}
  

请参阅this discussion,为什么没有办法解决问题。

答案 1 :(得分:0)

这肯定会解决您的问题。

@Injectable()
class A {
  constructor(private http: Http){ // <-- Injection in root class
  }
  foo(http:Http){    //<------receive parameter as Http type 
     http.get()...   //<------this will work for sure.
  };
}
import {Http} from '@angular/http';
@Injectable()
class B extends A{
  constructor(private http:Http){}

  bar() {
    this.foo(this.http);   //<----- passing this.http as a parameter
  }
}